Невозможно создать суперпользователя/ TypeError: NewUser() получил неожиданный аргумент ключевого слова 'username'
Я пытаюсь создать пользовательскую модель суперпользователя, но когда я пытаюсь создать фактическую учетную запись суперпользователя с помощью "python manage.py createsuperuser", я заполняю email, имя пользователя, имя, пароль и пароль 2. Но когда я нажимаю enter после ввода второго пароля, я получаю ошибку
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager
from datetime import datetime
from .country import COUNTRY_CHOICE
from django.utils.translation import gettext_lazy as _
from django.db import models
# Create your models here.
country_choice = COUNTRY_CHOICE
class CustomAccountManager(BaseUserManager):
def create_superuser(self, email, user_name, first_name, password, **other_fields):
other_fields.setdefault('is_staff', True)
other_fields.setdefault('is_superuser', True)
other_fields.setdefault('is_active', True)
if other_fields.get('is_staff') is not True:
raise ValueError('Superuser must be assigned to is_staff=True.')
if other_fields.get('is_superuser') is not True:
raise ValueError('Superuser must be assigned to is_superuser=True.')
return self.create_user(email, user_name, first_name, password, **other_fields)
def create_user(self, email, user_name, first_name, password, **other_fields):
if not email:
raise ValueError(_('You must provide an email address'))
email = self.normalize_email(email)
user = self.model(email=email, username=user_name,
first_name=first_name, **other_fields)
user.set_password(password)
user.save()
return user
class NewUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
user_name = models.CharField(max_length=50, unique=True)
first_name = models.CharField(max_length=30, blank=False)
middle_name = models.CharField(max_length=30, blank=True)
last_name = models.CharField(max_length=30, blank=False)
birthday = models.DateTimeField()
# gender model
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
('O', 'Other'),
)
gender = models.CharField(max_length=1, choices=[('M', 'Male'), ('F', 'Female'), ('O',
'Other')])
country = models.CharField(max_length=2, choices=COUNTRY_CHOICE)
datetime = models.DateTimeField(default=datetime.now())
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
objects = CustomAccountManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['user_name', 'first_name']
def __str__(self):
return self.user_name
Затем вот фактическая ошибка. В ней говорится, что она получает неожиданный аргумент, и я предполагаю, что это аргумент от BaseUserManager, но не уверен.
(ofaw) C:\Users\dell\Desktop\OneForAll\Django website\ofaw>python manage.py
createsuperuser
Email address: sufletel.sizu@gmail.com
User name: someUserName
First name: SomeFirstName
Password:
Password (again):
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\dell\ofaw\lib\site-packages\django\core\management\__init__.py", line
419, in execute_from_command_line
utility.execute()
File "C:\Users\dell\ofaw\lib\site-packages\django\core\management\__init__.py", line
413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\dell\ofaw\lib\site-packages\django\core\management\base.py", line 354, in
run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\dell\ofaw\lib\site-
packages\django\contrib\auth\management\commands\createsuperuser.py", line 79, in execute
return super().execute(*args, **options)
File "C:\Users\dell\ofaw\lib\site-packages\django\core\management\base.py", line 398, in
execute
output = self.handle(*args, **options)
File "C:\Users\dell\ofaw\lib\site-
packages\django\contrib\auth\management\commands\createsuperuser.py", line 189, in handle
self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
File "C:\Users\dell\Desktop\OneForAll\Django website\ofaw\register\models.py", line 25,
in create_superuser
return self.create_user(email, user_name, first_name, password, **other_fields)
File "C:\Users\dell\Desktop\OneForAll\Django website\ofaw\register\models.py", line 34,
in create_user
first_name=first_name, **other_fields)
File "C:\Users\dell\ofaw\lib\site-packages\django\db\models\base.py", line 503, in
__init__
raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls.__name__,
kwarg))
TypeError: NewUser() got an unexpected keyword argument 'username'
Есть идеи?