Django形式.SelectMultiple抱怨选择

时间:2015-09-15 17:44:16

标签: django forms

我尝试创建一个由多个选择字段组成的表单,该字段用于选择我的Person模型的多个实例。

class MyForm(forms.Form):
    choices = [(p.id, str(p)) for p in Person.objects.all()]
    my_field = forms.ChoiceField(widget=forms.SelectMultiple, choices=choices)

小部件看起来与我想要的完全一样,但是当我提交表单时,它会失败并显示消息

  

选择有效的选择。 [' 2',' 3']不是可用选项之一。

我做错了什么?从第三行删除widget=forms.SelectMultiple,时,它可以正常工作,但它只有一个选择字段。

1 个答案:

答案 0 :(得分:3)

您收到错误是因为ChoiceField需要一个选择。

如果您想允许多项选择,请使用MultipleChoiceField

my_field = forms.MultipleChoiceField(choices=choices)

请注意,您不必指定窗口小部件,因为它默认为forms.SelectMultiple