有没有简单的方法可以在初始化后更改 Django 模型表单的实例?
例如,以下内容将使用 id 为 1 的对象当前在数据库中的内容预先填充模板中的表单:
form = exampleModelForm(instance = Model.objects.get(pk=1)
这也会在调用 save() 时保存相关对象,而不是创建一个新对象。
这将创建一个新对象,而不是在模板中预先填充表单:
form = exampleModelForm()
由于我从不同的方法返回一个空白表单,因此我想在创建实例后为其分配一个实例并修改该对象,以便可以保存它并使用值预先填充模板存在于数据库中。我想要这样的东西,但我尝试过的似乎不起作用:
form = methodThatGetsForm(somearg)
form.instance = ExampleModel.objects.get(pk = getId(somearg))
我这里缺少一个简单的功能吗?
最佳答案
我还没有对此进行测试,但我想知道您是否可以使用返回的表单数据和实例作为新对象重新初始化一个新表单。
form = methodThatGetsForm(somearg)
new_form = ExampleModelForm(form.cleaned_data, instance=ExampleModel.objects.get(pk=getID(somearg)))
new_form.save()
如果没有,应该有一种方法可以使用它的 ._meta
数据从返回的 form
中获取字段的键/值对字典形式的数据。我认为如果您将该字典发送到表单 init,它会将这些值分配给实例对象,就像发送它 request.POST
一样。
关于python - django更改模型表单实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729832/