我尝试创建一个由多个选择字段组成的表单,该字段用于选择我的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,
时,它可以正常工作,但它只有一个选择字段。
答案 0 :(得分:3)
您收到错误是因为ChoiceField
需要一个选择。
如果您想允许多项选择,请使用MultipleChoiceField
。
my_field = forms.MultipleChoiceField(choices=choices)
请注意,您不必指定窗口小部件,因为它默认为forms.SelectMultiple
。