django序列化器到json - 自定义json输出格式

Jas*_*onB 4 python django json

我是django的新手,最近我需要一个JSON输出,为此我使用以下django代码:

data = serializers.serialize("json", Mymodel.objects.all())
Run Code Online (Sandbox Code Playgroud)

它工作得很好,除了我得到的输出:

[{"pk": 8970859016715811, "model": "myapp.mymodel", "fields": {"reviews": "3.5", "title": .....}}]
Run Code Online (Sandbox Code Playgroud)

但是,我希望输出只是:

[{"reviews": "3.5", "title": .....}]
Run Code Online (Sandbox Code Playgroud)

要么,

[{"id": "8970859016715811", "reviews": "3.5", "title": .....}]
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人可以指出我如何实现这一目标的正确方向.

Sam*_*i N 6

您可以将"fields"参数添加到serialize-function,如下所示:

data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size'))
Run Code Online (Sandbox Code Playgroud)

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

编辑1:

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

Override Django Object Serializer中删除指定的模型:

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)
Run Code Online (Sandbox Code Playgroud)