2016-08-01 10 views
1

Im folgenden Code erhalte ich eine Fehlermeldung: Non-default argument follows default argument.Das nicht standardmäßige Argument folgt dem Standardargument

Würde jemand zufällig wissen, wie man das löst?

class MyUserManager(BaseUserManager): 
    def _create_user(self, email, first_name=None, last_name=None, username=None, 
        password, is_staff, is_superuser, **extra_fields): 
     now = timezone.now() 

     if not email: 
      raise ValueError('Users must have an email.') 

     email = self.normalize_email(email) 

     if first_name and last_name: 
      potential_username = slugify(
       "{0} {1}".format(first_name, last_name)) 

      try: 
       check_user = self.model.get(
        username=potential_username).exists() 
      except check_user.DoesNotExist: 
       check_user = None 

      if not check_user: 
       username = potential_username 

     user = self.model(email=email, 
          username=username, 
          is_staff=is_staff, is_active=True, 
          is_superuser=is_superuser, last_login=now, 
          date_joined=now, **extra_fields) 
     user.set_password(password) 
     user.save(using=self._db) 
     return user 

    def create_user(self, email, first_name, last_name, username, 
        password=None, **extra_fields): 
     return self._create_user(email, password, is_staff=False, 
           is_superuser=False, **extra_fields) 

    def create_superuser(self, email, username, password, **extra_fields): 
     return self._create_user(email, password, is_staff=True, 
           is_superuser=True, **extra_fields) 
+0

Können Sie bitte die vollständige Spur hinterlassen? –

Antwort

1

Dies ist nicht

erlaubt
def _create_user(self, email, first_name=None, last_name=None, username=None, 
       password, is_staff, is_superuser, **extra_fields): 

Du assignging standardmäßig first_name, last_name und username aber nicht beschränkt auf password, staff usw. Sie werden entweder ihre Reihenfolge ändern müssen, oder Sie werden zuweisen müssen Standardmäßig werden die Parameter verwendet, die auf den Benutzernamen folgen.

Beispiel:

def _create_user(self, email, 
password, is_staff, is_superuser, 
first_name=None, last_name=None, 
username=None,**extra_fields): 
+0

Was meinen Sie, ändern Sie ihre Reihenfolge? – jape

+0

pls siehe das Update – e4c5

+1

Hoppla danke @sayse Kopie einfügen Fehler – e4c5

Verwandte Themen