Reputation: 5127
I am not able to createsuperuser, I am getting the following error
Traceback (most recent call last):
File "/Users/napoleon/django-app/mysite/manage.py", line 22, in <module>
main()
File "/Users/napoleon/django-app/mysite/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/Users/napoleon/django-app/pfs-venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/Users/napoleon/django-app/pfs-venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/napoleon/django-app/pfs-venv/lib/python3.9/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/napoleon/django-app/pfs-venv/lib/python3.9/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 79, in execute
return super().execute(*args, **options)
File "/Users/napoleon/django-app/pfs-venv/lib/python3.9/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/Users/napoleon/django-app/pfs-venv/lib/python3.9/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 189, in handle
self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
AttributeError: 'UserManager' object has no attribute 'create_superuser'
basically its throwing
AttributeError: 'UserManager' object has no attribute 'create_superuser'
I read this alsoSO-related question I don't get it exactly as conveyed there.
import uuid
from django.contrib.auth.models import AbstractUser, UserManager
from django.db import models
class CustomUserManager(UserManager):
def create_user(self, email,date_of_birth, username,password=None,):
if not email:
msg = 'Users must have an email address'
raise ValueError(msg)
if not username:
msg = 'This username is not valid'
raise ValueError(msg)
# if not date_of_birth:
# msg = 'Please Verify Your DOB'
# raise ValueError(msg)
# user = self.model( email=UserManager.normalize_email(email),
# username=username,date_of_birth=date_of_birth )
user = self.model( email=UserManager.normalize_email(email),
username=username )
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self,email,username,password,date_of_birth):
user = self.create_user(email,password=password,username=username,date_of_birth=date_of_birth)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
# Custom User Model
class User(AbstractUser):
id = models.BigAutoField(primary_key=True)
user_uuid = models.UUIDField(default=uuid.uuid1())
full_name = models.CharField(max_length=200,default='')
email = models.CharField(max_length=200,default='')
#form can have empty value blank=True, db can have empty value null=True
email_last_verified_on = models.DateTimeField(null=True)
# Swapping the user model
AUTH_USER_MODEL = 'mainapp.User'
Please clarify, what am I missing ...
Upvotes: 1
Views: 234
Reputation: 477190
You need to add the UserManager
to the User
mode:
class User(AbstractUser):
# …
objects = CustomUserManager()
Without specifying the manager, it will fallback to the UserManager
[Django-doc], not the CustomUserManager
.
Upvotes: 2