Django自定义用户模型抛出SystemCheckError - 字段'username'与名称'username'冲突

时间:2017-11-29 19:17:56

标签: django django-models django-authentication django-users

我正在Django中编写自定义用户模型,正如Django官方教程中提到的那样从AbstractUser继承它。但这会引发错误。

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的字段,但这并未解决问题。

1 个答案:

答案 0 :(得分:0)

正如@Alasdair指出的那样,在设置USERNAME_FIELD的值时,我不得不使用字符串而不是变量。

所以在我的情况下它是

USERNAME_FIELD = 'username'