型号:
class Member( models.Model ):
model_categories = models.CharField(
max_length = 255,
null = True,
blank = True )
形式:
class MemberForm( forms.ModelForm ):
MODEL_CATEGORIES = (
('advisor', 'advisor'),
('member', 'member'),
('admin', 'admin'),
)
model_categories = forms.MultipleChoiceField(
widget = forms.CheckboxSelectMultiple,
choices = MODEL_CATEGORIES
)
class Meta:
model = Member
fields = [ 'model_categories' ]
当我提交表单时,仍需要无法选中框的model_categories
字段。是什么原因?
答案 0 :(得分:1)
默认情况下,django表单中的字段为required=True
。在表单字段定义中设置required=False
:
model_categories = forms.MultipleChoiceField(
widget = forms.CheckboxSelectMultiple,
choices = MODEL_CATEGORIES,
required=False
)
更多:
模型中的 blank=True
决定了天气可能是空白还是不在表格中。
但,通过在MemberForm
model_categories = forms.MultipleChoiceField(
widget = forms.CheckboxSelectMultiple,
choices = MODEL_CATEGORIES
您使用新的字段定义中的默认属性ModelForm
来覆盖False
字段,其中requried属性由模型blank=True
设置required=True
。
答案 1 :(得分:0)
来自docs:
Field.required¶ 默认情况下,每个Field类都假定该值是必需的,因此如果传递一个空值 - None或空字符串(“”) - 那么clean()将引发ValidationError异常:
所以你必须为你的字段设置所需的错误
model_categories = forms.MultipleChoiceField(required=False,
widget = forms.CheckboxSelectMultiple,
choices = MODEL_CATEGORIES
)