使用CheckboxSelectMultiple的表单不会验证

时间:2009-04-14 02:50:18

标签: django django-forms

我有一个带有使用CheckboxSelectMultiple小部件的选择字段的表单:

foo = forms.ChoiceField(widget=forms.CheckboxSelectMultiple,
                        choices=(
                                  ("1", "ONE"),
                                  ("2", "TWO"),
                                 ))

表单呈现正常显示两个复选框,但它不会验证。

如果我同时选中这两个复选框,则会收到错误:选择有效选项。 [u'1',u'2']不是可用的选择之一

选择一个复选框也不起作用,它给了我:选择一个有效的选择。 [u'1']不是可用的选择之一。

这里发生了什么?

2 个答案:

答案 0 :(得分:30)

如果你将该字段设为form.MultipleChoiceField而不是forms.ChoiceField,它将更好地工作。

答案 1 :(得分:5)

这对你有帮助

num_choices = ( ("1", "ONE"), ("2", "TWO"), ("3", "Three"), ("4", "Four"))

num_list = forms.MultipleChoiceField(choices=num_choices, required=True, widget=forms.CheckboxSelectMultiple(), label='Select No', initial=("1", "2"))

如果要直接传递ORM对象,则可以尝试以下

num_list = forms.ModelMultipleChoiceField(Numbers.objects.all(), required=True, widget=forms.CheckboxSelectMultiple(), label='Select No')