1

我创建了一个带有字段选择的学生模型。但是,当我保存它时,它不会验证选项是否在我在模型字段中指定的选项中。

为什么它不阻止我使用我在模型中未指定的选项保存新对象?

这是模型:

class Student(models.Model):
    year_in_school = models.CharField(
        max_length=4,
        choices= [
            ('FRES', 'Freshman'),
            ('SOPH', 'Sophomore'),
        ],
    )

这是我在 shell 中编写的代码:

>>> from app.models import Student
>>> new_student = Student.objects.create(year_in_school='HACK')
>>> new_student.year_in_school
'HA'
4

1 回答 1

4

您可能想在此处阅读有关选择的更多信息。相关部分复制如下:

如果给出选择,它们将由模型验证强制执行

选择不在数据库级别强制执行。您需要执行模型验证(通过调用full_clean())才能检查它。

full_clean()save()调用模型的方法时不会自动调用。您需要手动调用它。

于 2020-02-22T12:00:08.683 回答