代码之家  ›  专栏  ›  技术社区  ›  Sergey Golovchenko

带有复选框SelectMultiple的表单无法验证

  •  19
  • Sergey Golovchenko  · 技术社区  · 17 年前

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

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

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

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

    这是怎么回事?

    2 回复  |  直到 12 年前
        1
  •  32
  •   Krystian Cybulski    17 年前

    如果将该字段设置为forms.multipleechoicefield而不是forms.ChoiceField,则效果会更好。

        2
  •  6
  •   César    13 年前

    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')