【发布时间】:2019-03-20 00:31:24
【问题描述】:
我有一个实现BaseSerializer 类的序列化程序,我在其中使用to_representation 函数来执行这样的函数调用:
class ItemSerializer(serializers.BaseSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['log'] = SERVICE.log(instance.id)
return ret
class Meta:
list_serializer_class = ItemListSerializer
model = models.Item
fields = '__all__'
我还有一个相同ItemListSerializer 的列表序列化程序,如下所示:
class ItemListSerializer(serializers.ListSerializer):
def create(self, validated_data):
items = [models.Item(**item) for item in validated_data]
return models.Item.objects.bulk_create(items)
当我想要获取整个项目列表时,我想要做的是覆盖 ItemSerializer 中的 to_representation 方法。我基本上想避免对每个项目进行函数调用,而是在出于性能原因请求项目列表时对所有项目进行批量调用。
有什么好办法吗?我按照这些文档创建了ItemListSerializer:https://www.django-rest-framework.org/api-guide/serializers/#customizing-listserializer-behavior,但它只讨论了覆盖创建和更新方法。
【问题讨论】:
-
列表序列化程序有自己的
to_representation实现。检查它github.com/encode/django-rest-framework/blob/…
标签: django python-3.x django-rest-framework django-views django-serializer