Как создать суперпользователя django с внешним ключом в первый раз - PullRequest
2 голосов
/ 31 марта 2019

Я начал проект django с расширения пользовательской модели из AbstractUser до моей пользовательской модели, которая имеет отношение внешнего ключа к другой модели.Когда я пытаюсь создать суперпользователя с manage.py, он не создает суперпользователя для тестирования, давая мне IntegrityError.Я знаю, что в RoleModel нет записей, как мне справиться с этой ситуацией.Я буду играть роль, пока Учитель зарегистрируется на сайте.Любая помощь будет оценена

class TeacherModel(AbstractUser):
    middle_name = models.CharField(max_length=256)
    role = models.ForeignKey(RoleModel, on_delete=models.DO_NOTHING, null=True)

Ответы [ 3 ]

0 голосов
/ 31 марта 2019

Firstable, что вы хотите сделать, расширить или настроить пользовательскую модель?

Если вы хотите расширить ... Достаточно с внешним ключом. Для этого проект Django рекомендует использовать OneToOneField(User).

Вы можете использовать OneToOneField (TeacherModel) в своей RoleModel

В этом случае см. Ссылку ниже.

https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#extending-the-existing-user-model

С другой стороны, если вы хотите настроить пользовательскую модель, вы должны сделать это перед выполнением миграций. Первоначальная настройка должна иметь ваши настройки. Вы можете создать приложение только для настройки пользовательской модели.

В этом случае см. Ссылки ниже.

https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#substituting-a-custom-user-model

https://wsvincent.com/django-tips-custom-user-model/

Надеюсь, это помогло вам

0 голосов
/ 15 мая 2019

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

Во-вторых, вам придется создать и использовать пользовательский UserManager в своей пользовательской модели, который обрабатывает дополнительные поля, добавленные в пользовательскую модель при создании нового пользователя.

Вы можете сослаться на этот коммит Django GitHub , который представил эту поддержку о том, как реализовать функциональность. Код прост и понятен.

Вам также может понадобиться несколько других настроек, чтобы все работало хорошо. См. Полный пример , приведенный в документах Django.

0 голосов
/ 31 марта 2019

Исключение возникает, когда затрагивается реляционная целостность базы данных, например ошибка проверки внешнего ключа, дубликата ключа и т. д.

Вот ответ: Ошибка целостности в Django

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...