#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