«HSH.Usuario.email: (models.E006) Поле« электронная почта »конфликтует с полем« электронная почта »из модели« HSH.usuario »» - PullRequest
1 голос
/ 03 июня 2019

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

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

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

# From HSH.models.py
class Usuario(AbstractUser):

 es_admin = models.BooleanField(default=False)
 es_premium = models.BooleanField(default=False)

 email = models.EmailField(unique=True)
 id_perfil = models.ForeignKey(Perfil, on_delete=models.CASCADE)

 USERNAME_FIELD = email

# From settings.py
AUTH_USER_MODEL = 'HSH.Usuario'

Однако, когда я пытаюсь выполнить миграцию, я получаю следующее сообщение об ошибке:

SystemCheckError: System check identified some issues:

ERRORS:
HSH.Usuario.email: (models.E006) The field 'email' clashes with the field 'email' from model 'HSH.usuario'.

Эта ошибка продолжает возникать, даже если я изменяю имя поля.

SystemCheckError: System check identified some issues:

ERRORS:
HSH.Usuario.mail: (models.E006) The field 'mail' clashes with the field 'mail' from model 'HSH.usuario'.

Что именно здесь происходит? Я полностью потерян в этой точке. Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 03 июня 2019

вы не можете использовать AbstractUser, чтобы определить email, поскольку email поле уже существует в User Model.

Вам просто нужно добавить другие необходимые поля дополнительно для класса AbstractUser

если вам нужно удалить все поля из django's default User model, используйте AbstractBaseUser class

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