我正在form.py中创建一个表单,我有:
config.trace_filter = GlobbingFilter(include=['__main__', 'doms.*'])
但是我收到以下错误:
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['first_name', 'last_name',
'username', 'email', 'academic_grade',]
我在数据库和用户表中检查了' academic_grade'等级栏
models.py
django.core.exceptions.FieldError: Unknown field(s) (academic_grade) specified for User
请指导我完成这个
答案 0 :(得分:5)
当你跑 -
python manage.py migrate
django将迁移以下应用中的所有内置模型 -
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes'
从 django.contrib.auth 应用中,有一个内置表用户,其中包含以下字段 -
Column |
id
password
last_login
is_superuser
username
first_name
last_name
email
is_staff
is_active
date_joined
我担心,这是由django选择的(通过错误导入或在实际创建自己的用户之前运行迁移命令)。 后者实际上会在模型之前创建用户。
因此,我建议您交叉检查您的导入或尝试为您的用户提供其他名称。例如
class PersonForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = Person
fields = ['first_name', 'last_name',
'username', 'email', 'academic_grade',]
请告诉我,如果你认为这有帮助或纠正我的话!
由于
答案 1 :(得分:0)
另一种可能的情况是您可能忘记在设置中添加AUTH_USER_MODEL
。 (这在我身上很多次发生。)
如果您构建customUser类,我建议您不要使用User作为类名。
class CustomUser(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=30, blank=True, default='')
academic_grade = models.CharField(choices=GRADE_CHOICES, default='')
from django.contrib.auth import get_user_model
User = get_user_model()
class UserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = User
fields = ['first_name', 'last_name',
'username', 'email', 'academic_grade',]
,然后在setting.py中添加
AUTH_USER_MODEL = 'appName.CustomUser'
如果您忘记添加AUTH_USER_MODEL
,则在迁移时会创建默认的django auth字段。您可以在迁移文件中进行验证。因此,您尝试在form.py中调用的任何自定义字段都将不可用。