使用非模型值序列化Django模型

时间:2013-02-11 00:36:34

标签: django json serialization

所以我有这种情况,我希望序列化具有非模型值的模型。我得到了模型的序列化[查询集和单个模型本身],但试图将其与非模型值结合起来似乎有问题。 例如我想通过请求的User JSONify status。 假设model_to_JSON做model => JSON,所以

# it messes the 'user' json by further escaping it, 
#which becomes unparseble on client since its a string now
dumps({ 'user': model_to_JSON(user_obj), 'status': 'ok'})

我可以通过首先在转换后的model-json上执行loads来做几个黑客攻击。但那就是这种hacky方式和如此多的时间只是浪费在dumps => loads =>转储 第二个选项是通过执行单个转储进行字符串连接,然后通过剥离最左边的字符串的'}'和最右边的字符串的'{'和','来连接字符串。

Django序列化程序非常专门针对模型/查询集编写,因此我无法真正覆盖它们。

之前有人遇到过这个问题以及你可以分享的任何解决方案

1 个答案:

答案 0 :(得分:0)

您可以查看Django Full Serializers,这是我很久以前使用的方法。

另一种选择是简单地编写自己的序列化函数,它允许您传入属性名称(将在序列化时查找)。我也是这样做的。如果你采用这种方法,请注意已经有一个django函数model_to_dict,它执行预序列化。

第三种方法可能是使用django的表单作为序列化的中间件:如果您可能反馈用户的数据,这可能很有用。