JSON自定义序列化程序

时间:2013-09-23 11:59:30

标签: python django json serialization django-models

我需要将django模型序列化为json格式,因此我编写了完整版和短版本的自定义方法(用于优化列表),例如。

class Article(models.Model):
    def serialize_full(self):
        return {
            'title': self.title,
            'absolute_url': self.get_absolute_url(),
            'content': self.content, 
            ...  # many heavy fields 
        }

    def serialize_short(self):        
        return {
            'title': self.title,
            'absolute_url': self.get_absolute_url(),
        }

然后我重新定义了默认编码器

class JSONEncoder(DjangoJSONEncoder):

    def default(self, obj):
        if isinstance(obj, QuerySet):
            return [o.serialize_short() for o in obj]
        if isinstance(obj, models.Model):
            return obj.serialize_full()
        return super(JSONEncoder, self).default(obj)

*这是我的代码的较短版本,以显示主要想法。

但是这样我就无法重新定义list的序列化(它在python json模块中是硬编码的)。 现在list文章按{I} serialize_full序列化,而不是serialize_short方法。

0 个答案:

没有答案