Ошибка создания суперпользователя в Django: ошибка атрибута: у объекта ‘ProfileManager’ нет атрибута ‘create_superuser’

#python #django #django-models

#питон #django #django-models #python

Вопрос:

Привет, я пытаюсь создать суперпользователя, однако после того, как я добавил свой собственный ProfileManager, я получаю сообщение об ошибке:

AttributeError: 'ProfileManager' object has no attribute 'create_superuser'

Но моя проблема в том, должен ли BaseUserManager уже иметь этот метод? Я не могу найти причину для наследования create_superuser метода.

Мой менеджер — это:

 class ProfileManager(BaseUserManager):
      pass
  

И моя модель:

 class Profile(AbstractUser):
      
      objects = ProfileManager()
  

Заранее спасибо за всю помощь!

Ответ №1:

BaseUserManager класс не имеет create_superuser nor create_user , эти методы реализованы в UserManager

Что также задокументировано в документации по настройке аутентификации

Если ваша модель пользователя определяет поля username, email, is_staff, is_active, is_superuser, last_login и date_joined так же, как пользователь по умолчанию в Django, вы можете установить Django UserManager; однако, если ваша модель пользователя определяет другие поля, вам необходимо определить пользовательский менеджер, который расширяет BaseUserManager, предоставляя два дополнительных метода:

  • create_user

  • create_superuser

Таким образом, вам не нужно устанавливать атрибут objects или переопределять что-либо, поскольку AbstractUser устанавливает атрибут objects в

  objects = UserManager()
  

Ответ №2:

Нет, у BaseUserManager него нет этого метода, но UserManager есть

 from django.contrib.auth.models import UserManager


class ProfileManager(UserManager):
    pass