Django 自定义用户模型抛出 SystemCheckError - 字段 'username' 与名称冲突 'username'
Django custom User model throwing SystemCheckError - The field 'username' clashes with the name 'username'
我正在 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
以外的其他名称,认为 AbstractUser
中可能已经存在名为 username
的字段,但这并没有解决问题。
正如@Alasdair 指出的那样,在设置 USERNAME_FIELD
.
的值时,我必须使用字符串,而不是变量
所以在我的情况下是
USERNAME_FIELD = 'username'
我正在 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
以外的其他名称,认为 AbstractUser
中可能已经存在名为 username
的字段,但这并没有解决问题。
正如@Alasdair 指出的那样,在设置 USERNAME_FIELD
.
所以在我的情况下是
USERNAME_FIELD = 'username'