将未绑定的形式转换为绑定的形式?

2023-12-19

我想要一个对象的绑定形式来使用 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(使用前将#替换为@)

将未绑定的形式转换为绑定的形式? 的相关文章

随机推荐