Пользовательская модель пользователя Django выдает SystemCheckError — поле «имя пользователя» конфликтует с именем «имя пользователя»

Я пишу пользовательскую модель пользователя в Django, наследуя ее от AbstractUser, как указано в официальных руководствах по Django. Но это выдает ошибку.

django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
redditauth.RedditUser.username: (models.E006) The field 'username' clashes with the field 'username' from model 'redditauth.reddituser'.

Вот код, который я написал для пользовательской модели пользователя.

class RedditUser(AbstractUser):
    username = models.CharField(unique=True, primary_key=True, validators=[validate_reddit_username], max_length=20)
    token = models.CharField(max_length=256)

    USERNAME_FIELD = username
    REQUIRED_FIELDS = ['token']

    def reddit(self):
        with open('secret.json', 'r') as f:
            secret = json.load(f)

        return praw.Reddit(client_id=secret['client_id'], client_secret=secret['client_secret'],
                           refresh_token=self.token, user_agent='Plan-Reddit by /u/SkullTech101')

Я попытался переименовать его во что-то отличное от username, думая, что, возможно, поле с именем username уже было в AbstractUser, но это не решило проблему.


person Sumit Ghosh    schedule 29.11.2017    source источник
comment
Используйте строку, а не переменную: USERNAME_FIELD = 'username'   -  person Alasdair    schedule 29.11.2017


Ответы (1)


Как указал @Alasdair, мне пришлось использовать строку, а не переменную, при установке значения USERNAME_FIELD.

Так в моем случае было

USERNAME_FIELD = 'username'
person Sumit Ghosh    schedule 29.11.2017