使用CheckboxSelectMultiple的表单不会验证

Ser*_*nko 19 django django-forms

我有一个表单,其中包含使用CheckboxSelectMultiple小部件的选项字段:

foo = forms.ChoiceField(widget=forms.CheckboxSelectMultiple,
                        choices=(
                                  ("1", "ONE"),
                                  ("2", "TWO"),
                                 ))
Run Code Online (Sandbox Code Playgroud)

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

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

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

这里发生了什么?

Kry*_*ski 30

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


Bal*_*mar 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"))
Run Code Online (Sandbox Code Playgroud)

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

num_list = forms.ModelMultipleChoiceField(Numbers.objects.all(), required=True, widget=forms.CheckboxSelectMultiple(), label='Select No')
Run Code Online (Sandbox Code Playgroud)