0

我有这个表单获取 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 没有这样的东西,但这只是为了展示总体思路。

4

1 回答 1

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。

我希望它有帮助!

于 2013-05-11T17:30:45.347 回答