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)
我想知道是否有人可以指出我如何实现这一目标的正确方向.
您可以将"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)