我想要一个对象的绑定形式来使用 is_valid 方法。原因是因为我有一些旧数据,我希望用户根据新的验证规则进行更正。然后,我想在我的表单中重用干净方法的代码。
我最终序列化了我的回复:
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
这可行,但看起来不太像 Djangish。另外,这似乎是一个常见问题,所以我一直在寻找更好的方法来做到这一点。
根据文档,将数据从未绑定表单转换为绑定表单并不意味着会发生:https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method然而,这对我来说是最简单的解决方案。
有姜戈的django.forms.models.model_to_dict
函数会将您现有的模型实例转换为适合绑定到的数据字典ModelForm
.
与序列化和反序列化对象相比,这可能更有效,而且绝对更“Djangish”。
如果您还使用以下命令创建表单instance
关键字,它会知道在保存时更新现有记录。
So:
from django.forms.models import model_to_dict
...
fields_dict = model_to_dict(obj)
form = forms.MyForm(fields_dict, instance=obj)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)