在 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 对象的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

django-缓存机制,form组件

Django-组件拾遗

ModelForm 上的 Django 和字段集

Django之路——form modelform formset modelformset的各种用法

django form 和modelform

Django,使用 ModelForm 更新用户配置文件