I am building a custom User class in django to use in creating a signup application and I keep on getting the error above every time I try to makemigrations. As far as I can see, my code is per django documentation here.. I also have AUTH_USER_MODEL correctly placed in my settings configurations. Here's my models.py
`class MyUserManager(BaseUserManager): def create_user(self, email, first_name,last_name,profile_picture,phone_no,password=None): """ Creates and saves a User with the given email and password. """ if not email: raise ValueError('Users must have an email address') user = self.model( email=self.normalize_email(email), first_name=first_name, last_name=last_name, profile_picture=profile_picture, phone_no=phone_no, ) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, password): """ Creates and saves a superuser with the given email and password. """ SuperUser = self.create_user( email, password=password, ) SuperUser.staff = True SuperUser.admin = True SuperUser.save(using=self._db) return SuperUser class MyUser(AbstractBaseUser): email = models.EmailField( verbose_name = 'email_address', max_length=255, unique=True, # validators=email_validator, ) first_name = models.CharField(max_length=20,blank=False,null=False) last_name = models.CharField(max_length=20,blank=False,null=False) phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+254 ...'") phone_no = models.CharField(validators=[phone_regex], max_length=17, blank=False) profile_picture = models.ImageField(upload_to='media/',blank=False) # email_validator = EmailValidator(message='Invalid email # address',code=None,whitelist=None) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_admin = models.BooleanField(default=False) objects = MyUserManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['first_name','last_name','phone_no','profile_picture'] # Email & Password are required by default def get_full_name(self): return self.email def get_short_name(): return self.email def __str__(self): return self.email def has_perm(self,perm,obj=None): #does user have a specific permission return True def has_module_pers(self,app_label): #does user have permissions to view the app 'app_label' return True @property def is_admin(self): return self.is_admin @property def is_active(self): return self.is_active # hook in the New Manager to our Model class MyUser(AbstractBaseUser): ... objects = MyUserManager() `
#s a copy-paste error or is that what you're running? You should fix it, it makes your whole script look like a string