我有一个models.py文件:
class MyUser(AbstractUser):
YEAR_IN_SCHOOL_CHOICES = (('FRESHMAN', 'HOD'),('SOPHOMORE', 'Staff_Member'),)
#phone = models.CharField(max_length = 10, null = True)
Designation = models.CharField(max_length = 20, null = False,choices=YEAR_IN_SCHOOL_CHOICES,default='FRESHMAN')
当我运行 python manage.py migrate 命令时,它会显示错误: django.db.utils.InternalError:(1067,"默认无效'指定"")
的价值我看过文档:link
有人可以指出我在这个实现中做错了什么吗?
感谢。
答案 0 :(得分:0)
这是典型的公认结构:
class MyUser(AbstractUser):
FRESHMAN = 'HOD'
SOPHOMORE = 'Staff_Member'
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
)
Designation = models.CharField(max_length=20, null=False, choices=YEAR_IN_SCHOOL_CHOICES, default='HOD')
您遇到问题的原因(或其中一个原因)是因为每个选择元组中的第一项指定将存储在数据库中的内容,而第二项指定将在表单上的下拉列表中显示的内容。因此,默认情况下,您的默认值必须是存储在数据库中的内容。我假设它' HOD'你希望默认存储在数据库中,所以我就这样设置了我的例子。