无法在Django中创建选择标记

时间:2017-06-19 16:34:39

标签: python django django-models python-3.4

我有一个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

有人可以指出我在这个实现中做错了什么吗?

感谢。

1 个答案:

答案 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'你希望默认存储在数据库中,所以我就这样设置了我的例子。