我需要使用 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/

10-12 17:14