django改变模型表单实例

时间:2013-09-10 22:34:13

标签: python django

有没有简单的方法可以在初始化后更改Django模型表单的实例?

例如,以下内容将在模板中预先填充表单,其中包含当前ID为1的对象的内容:

form = exampleModelForm(instance = Model.objects.get(pk=1)

这将在调用save()时保存相关对象,而不是创建新对象。

这将创建一个新对象,而不是在模板中预先填充表单:

form = exampleModelForm()

当我从一个不同的方法返回一个空白表单时,我想在创建它之后为它分配一个实例并修改该对象以便保存它并且模板预先填充值存在于db中。我想要这样的东西,但我尝试过的东西似乎不起作用:

form = methodThatGetsForm(somearg)
form.instance = ExampleModel.objects.get(pk = getId(somearg))

我在这里缺少一个简单的功能吗?

1 个答案:

答案 0 :(得分:2)

我没有对此进行测试,但我想知道您是否可以使用返回的表单数据和实例作为新对象重新初始化新表单。

form = methodThatGetsForm(somearg)
new_form = ExampleModelForm(form.cleaned_data, instance=ExampleModel.objects.get(pk=getID(somearg)))
new_form.save()

如果没有,应该有一种方法可以使用它的form数据将数据作为返回的._meta字段的键/值对字典获取。我想如果你将这个字典发送到表单init,它会将这些值分配给实例对象,就像发送它request.POST一样。