【发布时间】:2018-11-04 22:44:17
【问题描述】:
在官方Django 2 tutorial我发现了这个:
from django.db import models
class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
)
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)
现在我的问题是使用选项是否意味着只有四个定义值中的任何一个对该字段有效?如果是这样,指定max_length 有什么用?如果不是,为什么不使用验证器来验证该值是否确实是指定值之一,或者至少是一个只接受特定长度而不仅仅是上限的验证器。
【问题讨论】:
-
我不明白你所说的“只有四个定义的值中的一个是有效的”是什么意思。这些值中的任何一个都是有效的。您需要 max_length 因为数据库需要知道分配给该字段的字符数。
-
我的意思是,如果设置了“A”或“RU”等未在选项中定义的值,该模型会引发异常吗?
标签: django validation django-models django-forms django-2.0