Django:在表单属性MultipleChoiceField上设置选项

时间:2015-03-21 17:38:29

标签: python django forms

我有以下django表格:

class SpecifyColumnsForm(forms.Form):
    columns = forms.MultipleChoiceField(required=False,
    widget=forms.CheckboxSelectMultiple)

现在,我想从MultipleChoiceField指定此views.py的选项。我怎么能这样做?

我尝试了以下方法,但它无效:

        columns_form = SpecifyColumnsForm(request.POST)
        columns_form.choices = (('somestuff', 'spam'),
                                ('otherstuff', 'eggs'),
                                ('banana', 'bar'))

谢谢!

2 个答案:

答案 0 :(得分:3)

documentation本身表明

  

class MultipleChoiceField(**kwargs)¶

     

[...]

     

选择一个额外的必需参数,就像ChoiceField一样。

所以你要做的就是

cool_choices = (('somestuff', 'spam'),
                ('otherstuff', 'eggs'),
                ('banana', 'bar'))

class SpecifyColumnsForm(forms.Form):
    columns = forms.MultipleChoiceField(
        required=False,
        widget=forms.CheckboxSelectMultiple,
        choices=cool_choices)

答案 1 :(得分:1)

在views.py中,您必须设置:

choices = (('somestuff', 'spam'),
           ('otherstuff', 'eggs'),
           ('banana', 'bar'))
form.fields["columns"].choices = choices

这对我有用,我不确定你是否可以避免在forms.py中设置choices。我认为无论如何你需要将它放在forms.py中,如果这是MultipleChoiceField的必需参数,否则你的表单可能无效。