1

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

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

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

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

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

form = exampleModelForm()

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

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

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

4

1 回答 1

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

于 2013-09-10T23:09:38.943 回答