我有这个表格获取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),
)
意味着所有选项都已选择First
和Third
。我知道Django没有这样的东西,但这只是为了展示一般的想法。
答案 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]})
这将显示选择了user
和guest
的MultipleChoiceField。
我希望它有所帮助!