Python Django:使用字段的几个实例初始化表单

Python Django:使用字段的几个实例初始化表单,python,django,django-forms,duplicates,fieldset,Python,Django,Django Forms,Duplicates,Fieldset,我有一个djangoModelForm来创建/编辑一些对象 我可以在UI中添加新的附加字段,如下所示: 我正在从所有字段(主字段和附加字段)收集数据,并以列表的形式保存到数据库中: 例如: 我在ModelForm中有一个name输入字段,在UI中添加了几个额外的name字段。我发送的请求如下: name=test1&name=test2&name=test3等等..并保存到数据库中,如: name=['test1','test2','test3'] 这里一切都很好,但是 当我想显示我的表单来编

我有一个django
ModelForm
来创建/编辑一些对象

我可以在UI中添加新的附加字段,如下所示:

我正在从所有字段(主字段和附加字段)收集数据,并以列表的形式保存到数据库中:

例如:

我在
ModelForm
中有一个
name
输入字段,在UI中添加了几个额外的
name
字段。我发送的请求如下:

name=test1&name=test2&name=test3
等等..并保存到数据库中,如:

name=['test1','test2','test3']

这里一切都很好,但是

当我想显示我的表单来编辑现有元素时,我真的不知道如何从这个列表
name=['test1','test2','test3']
将数据加载到我的
ModelForm
+如何用数据生成这些附加字段


对此有什么想法吗?

我还没有这样做,但我目前正在进行的项目将在将来需要它,因此我已经研究了一些来源。 虽然它已经很老了,但我认为它包含了一些仍然适用的关键概念。 本教程介绍django教程中的多选投票。下面的代码概述了在一个投票问题旁边应该有三个选择表格

pform = PollForm(instance=Poll())
cforms = [ChoiceForm(prefix=str(x), instance=Choice()) for x in range(0,3)]
您说希望表单显示现有元素以进行编辑。 因此这里Choice()应该替换为模型的实例,因此您可以执行类似instance=name1的操作,其中name1=Name.objects.get(id='1')或其他一些查询来获取模型的实例

本教程的作者还注意到了这个问题:

“有了它,你现在有了一个视图,可以同时为它添加一个投票和3个选择对象


创建一个视图来编辑相同的对象非常相似,您只需要查询Poll和Choice对象,并使用它们而不是空实例。您还可以使用Choice id作为ChoiceForm实例的前缀。使用ModelForm的好处是,一旦将实例arg从新对象更改为现有对象,它变成了一个编辑表单而不是一个添加表单,因此您不必更改任何内部结构即可从添加变为编辑。”

我认为这不是一个好主意,因为当我只需要一个字段时,您总是会创建一个重复的表单(包含所有数据)