python - django更改模型表单实例

标签 python django

有没有简单的方法可以在初始化后更改 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/

相关文章:

python - 如何从 Django 中的编码 URL 获取请求参数?

django:如何在模板中包含静态文件?

python - 在列表中查找项目和重复项

python - 执行自定义命令以在 Windows 中运行 python 插件时出错

python - Python Django 中的 makemessages 无法识别 ugettext 和 ugettext_lazy 函数

Pycharm 上的 Django : ImproperlyConfigured with DJANGO_SETTINGS_MODULE

django -/accounts/login/id 处的 TypeError 必须是 (str, unicode, ObjectId) 的实例,而不是 <type 'int' >

django - uWSGI 和 Python > 3.4

python - 如何更改用户代理 urllib2

python - 如何提取 Python 列表中的重复元组?