在 Django 中序列化 ModelForm 对象的最佳方法是啥?
Posted
技术标签:
【中文标题】在 Django 中序列化 ModelForm 对象的最佳方法是啥?【英文标题】:What is the best way to serialize a ModelForm object in Django?在 Django 中序列化 ModelForm 对象的最佳方法是什么? 【发布时间】:2010-09-27 00:31:21 【问题描述】:我正在为我当前的项目使用 Django 和 Google Web Toolkit (GWT)。我想通过 Http 响应将 ModelForm 实例传递给 GWT,以便我可以“切碎”它并随意渲染它。我的目标是使表单与对我的 models.py 文件的更改保持同步,同时增加我对表单外观的控制。但是,用于序列化的 django 类、序列化程序和 simplejson 无法序列化 ModelForm。 cPickle 也不能。我的替代方案是什么?
【问题讨论】:
要“使表单与对我的 models.py 的更改保持同步”,您不需要在客户端中实现与 django.forms 等效的东西吗? 【参考方案1】:如果您使用的是纯 Django,您可以将表单传递给您的模板,然后可以调用表单上的各个字段以进行更精确的呈现,而不是使用 ModelForm.to_table。您可以使用以下内容来遍历每个字段并完全按照您的意愿呈现:
% for field in form.fields %
<div class="form-field"> field </div>
% endfor %
如果您想排除某些字段,这也使您能够使用循环内的 % if % 块进行条件检查。
【讨论】:
【参考方案2】:如果您的问题只是将 ModelForm 序列化为 json,只需编写您自己的 simplejson 序列化器子类。
【讨论】:
以上是关于在 Django 中序列化 ModelForm 对象的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章