CommandError: Это поле не может быть пустым. Это поле не может быть null. при создании суперпользователя

Я использую пользовательский пользователь для аутентификации Django, и я продолжаю получать ошибку в заголовке каждый раз, когда я пытаюсь создать суперпользователя. Еще более запутанным является то, что пользователь, похоже, зарегистрирован, потому что когда я пытаюсь использовать электронную почту в следующем создании, он говорит, что электронная почта была использована, но затем, когда я пытаюсь войти в систему, он говорит, что у пользователя нет профиля.

Модель пользователя имеет следующий код:

Когда я запускаю команду python manage.py createsuperuser, я получаю только поля для заполнения электронной почты, пароля1 и проверки пароля, но затем я получаю ошибку CommandError: Это поле не может быть пустым.; Это поле не может быть нулевым.; Это поле не может быть пустым.; Это поле не может быть пустым. Я даже не знаю, на какое поле ссылается ошибка. Есть какие-нибудь версии?

За исключением неизвестной части

  • settings.DJANGO_ADMIN_FORCE_ALLAUTH
  • from rhs_soccer.users.enums import UserRoles

из вашего исходного кода, не было никаких проблем, когда я тестировал его с тем же кодом.

models.py

class User(AbstractBaseUser, PermissionsMixin):
    PLAYER = 'PR'
    COACH = 'CO'
    MANAGER = 'MG'
    PARENT = 'PR'
    ADMIN = 'AM'
    ROLES = [
      (PLAYER, 'PLAYER'),
      (COACH, 'COACH'),
      (MANAGER, 'MANAGER'),
      (PARENT, 'PARENT'),
      (ADMIN, 'ADMIN')
    ]
    ...
        role = CharField(
        _("Role"),
        max_length=50,
        choices=ROLES,
        default=PLAYER,
    )
    ...

forms.py

admin.autodiscover()
admin.site.login = secure_admin_login(admin.site.login)  # type: ignore[method-assign]

Фактический вызов проблемной команды createsuperuser соответствует методу handle в этом файле.

Сообщение об ошибке, передаваемое вопрошающему, похоже, связано со значением REQUIRED_FIELDS модели пользователя, но REQUIRED_FIELDS вопрошающего пуст.

Поэтому я не понимаю, почему возникает ошибка вопрошающего.

Однако я хотел бы, чтобы вы попробовали отладить эту часть проблемы.

for field_name in self.UserModel.REQUIRED_FIELDS:
    field = self.UserModel._meta.get_field(field_name)
    user_data[field_name] = options[field_name]
    if user_data[field_name] is not None:
        user_data[field_name] = field.clean(user_data[field_name], None)
    while user_data[field_name] is None:
        message = self._get_input_message(field)
        input_value = self.get_input_data(field, message)
        user_data[field_name] = input_value
        if field.many_to_many and input_value:
            if not input_value.strip():
                user_data[field_name] = None
                self.stderr.write("Error: This field cannot be blank.")
                continue
            user_data[field_name] = [pk.strip() for pk in input_value.split(",")]

    if not field.many_to_many:
        fake_user_data[field_name] = user_data[field_name]
        # Wrap any foreign keys in fake model instances.
        if field.many_to_one:
            fake_user_data[field_name] = field.remote_field.model(user_data[field_name])

Похоже, что в этой области есть проблема. Я бы хотел попробовать отладить больше, но в моем коде не возникло никаких ошибок. Если отладка этой части не решит проблему, пожалуйста, приложите содержимое settings.py к телу вопроса.

Вернуться на верх