【发布时间】:2011-09-02 19:05:51
【问题描述】:
我为我的一个模型编写了一个 __init__ 方法,该方法通过向对象动态添加不反映数据库中列的属性来向对象添加一些辅助信息:
class MyModel(models.Model):
title = Models.CharField()
description = Models.TextField()
def __init__(self, *args, **kwargs):
self.aux_info = "I'm not in the database!"
这似乎工作正常,但我发现它不起作用的情况。我在视图中有一些代码,我在其中设置了一个状态变量并将MyModels 的列表打包到 json 中,如下所示:
from django.core import serializers
from django.utils import simplejson
...
# have to use serializers for django models
serialized_items = serializers.serialize("json", itemlist)
data["items"] = serialized_items # serialized_items is now a string
data["status"] = status
# package up data dict using simplejson for python objects
resp = simplejson.dumps(data)
return HttpResponse(resp, mimetype="application/javascript")
问题似乎是 django 的序列化器只序列化模型字段而不是对象的所有属性,因此 aux_info 没有通过。我也很确定同时使用序列化程序和 simplejson 不是正确的方法。感谢您的帮助!
【问题讨论】:
-
如果你想包含原始模型中没有的属性,你必须编写自己的序列化程序
标签: python django serialization