django serializers到json - 自定义json输出格式 [英] django serializers to json - custom json output format

查看:954
本文介绍了django serializers到json - 自定义json输出格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对django很新,最近我有一个JSON输出的要求,我使用以下django代码:

  data = serializers.serialize(json,Mymodel.objects.all())

除了得到以下输出之外,它的效果很好:

  [{pk:8970859016715811,model:myapp mymodel,fields:{评论:3.5,标题:.....}}] 

但是,我希望输出仅仅是:

  [{评论 3.5,title:.....}] 

  [{id:8970859016715811,评论:3.5,标题:.....}] 

我想知道有人可以指出正确的方向,如何实现这一点。 >

解决方案

您可以在序列化函数中添加fields参数,如下所示:

  data = serializers.serial ize('xml',SomeModel.objects.all(),fields =('name','size'))

请参阅: https://docs.djangoproject.com/en/ dev / topics / serialization /



编辑1:



您可以自定义序列化程序以仅获取您指定的字段。



覆盖Django Object Serializer以摆脱指定的模型

 $ d code $ c 

class MySerialiser(Serializer):
def end_object(self,obj):
self._current [code] from django.core.serializers.python import Serializer

class MySerialiser 'id'] = obj._get_pk_val()
self.objects.append(self._current)

#views.py
serializer = MySerialiser()
data = serializer.serialize(some_qs)


I am quite new to django and recently I have a requirement of a JSON output, for which I use the following django code:

data = serializers.serialize("json", Mymodel.objects.all())

It works great, except that I get a output of:

[{"pk": 8970859016715811, "model": "myapp.mymodel", "fields": {"reviews": "3.5", "title": .....}}]

However, I would like the output to be simply either:

[{"reviews": "3.5", "title": .....}]

or,

[{"id": "8970859016715811", "reviews": "3.5", "title": .....}]

I was wondering if someone could point me to the right direction as to how to achieve this.

解决方案

You can add 'fields' parameter to the serialize-function, like this:

data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))

See: https://docs.djangoproject.com/en/dev/topics/serialization/

EDIT 1:

You can customize the serializer to get only the fields you specify.

From Override Django Object Serializer to get rid of specified model:

from django.core.serializers.python import Serializer

class MySerialiser(Serializer):
    def end_object( self, obj ):
        self._current['id'] = obj._get_pk_val()
        self.objects.append( self._current )

 # views.py
 serializer = MySerialiser()
 data = serializer.serialize(some_qs)

这篇关于django serializers到json - 自定义json输出格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆