Django 将未绑定窗体转换为绑定窗体?

Django 将未绑定窗体转换为绑定窗体?,django,django-forms,Django,Django Forms,我想从一个对象得到一个绑定表单,以使用is\u valid方法。原因是我有一些旧数据,希望用户根据新的验证规则进行更正。然后,我想在表单中重用clean方法的代码 我最终将我的回答序列化: from django.utils import simplejson from django.core.serializers import serialize (...) fields_dict = simplejson.loads(serialize('json', [obj]))[0]['fiel

我想从一个对象得到一个绑定表单,以使用is\u valid方法。原因是我有一些旧数据,希望用户根据新的验证规则进行更正。然后,我想在表单中重用clean方法的代码

我最终将我的回答序列化:

from django.utils import simplejson
from django.core.serializers import serialize

(...)

fields_dict = simplejson.loads(serialize('json', [obj]))[0]['fields']
form = forms.MyForm(fields_dict)
if form.is_valid
这很管用,但看起来不太像DJ。而且,这似乎是一个常见的问题,所以我一直在寻找一个更好的方法

根据文档,将数据从未绑定表单转换为绑定表单的目的不是为了:
但是,这对我来说是最简单的解决方案。

Django的
Django.forms.models.model\u to\u dict
函数将现有模型实例转换为适合绑定到
模型表单的数据字典

这可能比序列化和取消序列化对象更有效,而且肯定更“Djangish”

如果您还使用
实例
关键字创建表单,它将知道在保存时更新现有记录

因此:


告诉我是否正确:您在某个地方有旧数据,并且由于保存了这些数据,验证规则发生了更改。现在,您想使用一个模型表单来重新验证旧数据并向用户显示错误吗?
obj
来自哪里?这将有助于确定这里发生了什么。确切地说是@Penthi。我想oogles给了我想要的东西。谢谢,谢谢!这就是我要找的。
from django.forms.models import model_to_dict

...

fields_dict = model_to_dict(obj)
form = forms.MyForm(fields_dict, instance=obj)