我需要使用 formset
字段将初始数据设置为 ManyToMany
。
通常,当我的 fomset 形式中没有 ManyToMany 字段时,我会这样做:
PersonFormSet = forms.formsets.formset_factory(NickName, can_delete=True)
init_data = [{'name':'Vasya pupkin','nick':'Vasya'},
{'name':'Vasyapupkin','nick':'Petya'}]
nick_formset = PersonFormSet(initial=init_data)
但现在我需要设置 ManyToMany 字段初始数据并尝试如下操作:
NickNameFormSet = forms.formsets.formset_factory(NickName, can_delete=True)
init_data = [{'name': 'Vasya Pupkin',
'nick': {'Vasya':'selected',
'Petya':'notselected'}}]
nick_formset = NickNameFormSet(initial=init_data)
但它不起作用。
如何将初始数据传递给 Formset,以便它像这样呈现我的小部件:
<select multiple="multiple" name="person_set-0-nickname" id="id_person_set-0-nickname">
<option value="1" selected="selected">Vasya</option>
<option value="2">Petya</option>
</select>
注意 :我只使用 Django 的表单和表单集。没有 Django 模型。我实际上可以定义它,但它是空的,我正在使用
NoSQL
。 最佳答案
您应该提供 pk
列表作为 ManyToMany 关系的初始数据,而不是 dict
。
看看 this thread ,它可能对你有帮助。
关于python - Django,使用 ManyToMany 将初始数据设置为 formset,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5223048/