hello everyone
here i wrote a user model and model manager for it
when i try to create a super user some kind of error named get_by_natural_key shows up
help me fix it please
my model.py
from django.db import models
from django.contrib.auth.models import AbstractBaseUser
from .managers import UserManager
class User(AbstractBaseUser):
email = models.EmailField(max_length=2500 , unique=True)
phone_number = models.CharField(max_length=11 , unique=True)
full_name = models.CharField(max_length=200)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = UserManager
USERNAME_FIELD = 'phone_number'
REQUIRED_FIELDS = ['full_name' , 'email']
def __str__(self):
return self.email
def has_perm(self , perm , obj = None):
return True
def has_module_perms(self , app_label):
return True
@property
def is_staff(self):
return self.is_admin
my manager.py
from django.contrib.auth.models import BaseUserManager
class UserManager(BaseUserManager):
def create_user(self , email ,phone_number , full_name , password ):
if not email:
raise ValueError('user must have email')
if not phone_number:
raise ValueError('user must have phone number')
if not full_name:
raise ValueError('user must have full name')
user = self.model(email=self.normalize_email(email) , phone_number = phone_number , full_name = full_name)
user.set_password(password)
user.save(using = self._db)
return user
def create_superuser(self , email , phone_number , full_name , password):
user = self.create_user(email , phone_number , full_name , password)
user.is_admin = True
user.save(using = self._db)
return user
and of course i set the AUTH_USER_MODEL=‘account.User’
error that shows up:
Traceback (most recent call last):
File "E:\python practice2\A\manage.py", line 22, in <module>
main()
File "E:\python practice2\A\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "E:\coding\Lib\site-packages\django\core\management\__init__.py", line 442, in execute_from_command_line
utility.execute()
File "E:\coding\Lib\site-packages\django\core\management\__init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "E:\coding\Lib\site-packages\django\core\management\base.py", line 413, in run_from_argv
self.execute(*args, **cmd_options)
File "E:\coding\Lib\site-packages\django\contrib\auth\management\commands\createsuperuser.py", line 90, in execute
return super().execute(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\coding\Lib\site-packages\django\core\management\base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\coding\Lib\site-packages\django\contrib\auth\management\commands\createsuperuser.py", line 132, in handle
error_msg = self._validate_username(
^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\coding\Lib\site-packages\django\contrib\auth\management\commands\createsuperuser.py", line 305, in _validate_username
self.UserModel._default_manager.db_manager(database).get_by_natural_key(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Manager' object has no attribute 'get_by_natural_key'