在MultpleChoiceField中加载Picked旁边的所有选项

时间:2013-05-11 15:07:13

标签: django django-forms

我有这个表格获取MultpleChoicesField(而不是ModelForm)的动态选择值,如下所示:

 25 class SelectedVisitorsForm(forms.Form):
 26 
 27     visitors = forms.MultipleChoiceField(required=True)
 28     def __init__(self,visitors_dict, *args, **kwargs):
 29         super(SelectedVisitorsForm, self).__init__(*args, **kwargs)
 30         self.fields['visitors'] = forms.MultipleChoiceField(choices=visitors_dict)

现在,假设我想传递给这个表单选项,其中一些已经被选中。我该怎么办?

换句话说,我希望在visitors_dict

中传递类似的内容
visitors_dict = (
  (1,'First Option',1),
  (2,'Second Option',0),
  (3,'Third Option',1),
)

意味着所有选项都已选择FirstThird。我知道Django没有这样的东西,但这只是为了展示一般的想法。

1 个答案:

答案 0 :(得分:1)

比这更简单。当您实例化表单时,将参数data传递给一个带有关键字visitors的字典作为列表,其中包含您要选择的选项字段的标识符(选项中最左侧的值)元组)。

例如,假设您有:

class SelectedVisitorsForm(forms.Form):
    CHOICE = (
        (1,'user'),
        (2, 'admin'),
        (3, 'guest'),
    )
    visitors = forms.MultipleChoiceField(required=True, choices=CHOICES)

然后,当您在views中实例化此表单时,请执行以下操作:

form = SelectedVisitorsForm(data={visitors:[1,3]})

这将显示选择了userguest的MultipleChoiceField。

我希望它有所帮助!