I got this error when i try to run manage.py createsuperuser
TypeError: UserManager.create_superuser() missing 1 required positional argument: ‘username’
My User model:
class User(AbstractUser): name = models.CharField(max_length=32) email = models.CharField(max_length=140, unique=True) password = models.CharField(max_length=140) username = None USERNAME_FIELD = 'email' REQUIRED_FIELDS = []
and in my settings.py file:
AUTH_USER_MODEL = 'usuarios.User'
How can i solve this? Im new in Django, documentation is confused to me…
I already tried remove AUTH_USER_MODEL = ‘usuarios.User’ or remove username attribute from class User
Advertisement
Answer
To create superuser with custom user model like above you have to implement the method create_superuser in the custom UserManager class some thing like bellow.and you need to specify username field in custom user model like bellow. Then specify the custom user model in the settings
class User(AbstractBaseUser,PermissionsMixin): name = models.CharField(max_length=255,null=True,blank=True) mobile = models.CharField("Mobile No",max_length=10,unique=True) is_active = models.BooleanField(default=True) objects = CustUserManager() # custom object manager USERNAME_FIELD = 'mobile' # custom username field (**in this case mobile**) class CustUserManager(BaseUserManager): def create_superuser(self,mobile,password=None,**extra_fields): user = self.create_user(mobile,password) user.is_superuser = True user.save(using=self._db) def create_user(self,email,account_no,password=None,**extra_fields): #code to create user like above