【问题标题】:Django: Set choices on form attribute MultipleChoiceFieldDjango:在表单属性 MultipleChoiceField 上设置选择
【发布时间】:2015-03-21 17:38:28
【问题描述】:

我有以下 django 表单:

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

现在,我想从views.py 中指定这个MultipleChoiceField 的选项。我该怎么做?

我尝试了以下方法,但没有成功:

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

谢谢!

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    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)
    

    【讨论】:

      【解决方案2】:

      在你的views.py中你必须设置:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多