The manager https://docs.djangoproject.com/en/3.0/topics/auth/customizing/#django.contrib.auth.models.BaseUserManager You don't have a method. _create_user (Where do you get it?) That manager only has the following methods:normalize_emailget_by_natural_keymake_random_passwordThe following inheritance is not necessary:class UserManager(BaseUserManager, models.Manager):
The manager https://docs.djangoproject.com/en/3.0/topics/auth/customizing/#django.contrib.auth.models.BaseUserManager already inherited from models.ManagerI don't know if you're treating him like a mixin...Then your manager should be like this:class UserManager(BaseUserManager):
def create_user(self, username, email, password, is_staff=False, **extra_fields):
# Validaciones....
user = self.model(
username = username,
email = self.normalize_email(email), # !
is_staff = is_staff,
**extra_fields
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, username, email, password, **extra_fields):
return self.create_user(
username = username,
email=email,
password = password,
is_superuser = True,
**extra_fields
)
Take the parameter is_superuser method create_userbecause it makes no sense to create a method create_superuser if you can create a super user from the method create_userIt doesn't make sense.On the other hand I don't recommend you to put that on **extra_fields, because you can also create a super user from the method create_user which makes no sense (this you can see in the same method create_superuser).The ideal manager would be the following:class UserManager(BaseUserManager):
def create_user(self, username, email, password, is_staff=False):
user = self.model(
username = username,
email = self.normalize_email(email),
is_staff = is_staff
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, username, email, password):
user = self.create_user(
username = username,
email=email,
password = password,
is_staff = True
)
user.is_superuser = True
user.save(using=self._db)
return user
I hope I helped you.