gpt4 book ai didi

python - 在 Django 中自定义 JSON 序列化器

转载 作者:行者123 更新时间:2023-12-01 05:02:48 25 4
gpt4 key购买 nike

我正在序列化一个 Django 查询集,它给我一个类似的输出

[{"pk": 3, "model": "appname.somemodel", "fields": {"name": "value", "name": "value" }}]

我只对这些领域感兴趣。所以我试图覆盖序列化器。

我已经尝试过

from django.core.serializers.json import Serializer

class JSONSerializer(Serializer):
def end_serialization(self):
for i, obj in enumerate(self.objects):
self.objects[i] = obj.get('fields', {})
return super(JSONSerializer, self).end_serialization()

但我收到属性错误:

'JSONSerializer' object has no attribute 'objects'

我已经检查了https://github.com/django/django/blob/master/django/core/serializers/python.py并且Serializer确实有一个名为objects<的列表 那么是什么导致了这个问题呢?

Django 是否有办法从我的序列化输出中省略 pkmodel

最佳答案

在 json.Serializer 方法 end_serialization 中完全被重写,因此为了了解它是如何工作的,您需要查看此https://github.com/django/django/blob/master/django/core/serializers/json.py .

属性 pk 和 model 添加在方法 get_dump_object 中,因此您需要覆盖它。

例如:

from django.core.serializers.json import Serializer

class JSONSerializer(Serializer):
def get_dump_object(self, obj):
return self._current or {}

带有 ID:

class JSONSerializer(Serializer):
def get_dump_object(self, obj):
dump_object = self._current or {}
dump_object.update({'pk': smart_text(obj._get_pk_val(), strings_only=True)})
return dump_object

关于python - 在 Django 中自定义 JSON 序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25703679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com