我有一个django ModelForm
来创建/编辑一些对象。
我在UI中有能力添加新的附加字段,例如: http://bootsnipp.com/snippets/featured/dynamic-form-fields-add-amp-remove-bs3
我正在从所有字段(主要和附加)收集数据并以列表的形式保存到数据库中:
例如:
我在name
中有一个ModelForm
输入字段,在UI中添加了几个额外的name
字段。我发送的请求是这样的:
name=test1&name=test2&name=test3
等等......并保存到DB中:
name = ['test1', 'test2', 'test3']
这里一切都很好,但是......
当我想显示我的表单来编辑现有元素时,我真的不知道如何将此列表name = ['test1', 'test2', 'test3']
中的数据加载到我的ModelForm
+如何使用数据生成这些附加字段。
有关于此的任何想法吗?
答案 0 :(得分:0)
我还没有这样做,但我目前正在进行的项目将来需要它,所以我已经研究了几个来源。 虽然this tutorial很老,但我认为它包含一些仍然适用的关键概念。 该教程涉及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 =&#39 ; 1')或其他一些查询来获取模型的实例。
本教程的作者还记下了这个问题:
"有了这个,你现在有了一个可以一次为它添加一个Poll和3 Choice对象的视图。
创建视图以编辑相同的对象非常相似,您只需要查询Poll和Choice对象并使用它们而不是空实例。您还可以使用Choice ID作为ChoiceForm实例的前缀。使用ModelForm的好处在于,一旦将实例arg从新对象更改为现有对象,它就会变成编辑表单而不是添加表单,因此您无需更改任何内部,从添加到编辑"