【发布时间】:2016-09-23 12:52:53
【问题描述】:
我有一组嵌套的序列化程序,它们在各自的 Meta 类上设置了 depth。我想根据传入视图的参数以编程方式更改深度。
class ResourceSerializer(serializers.ModelSerializer):
type = serializers.PrimaryKeyRelatedField(queryset=EntityType.objects.all())
tags = serializers.PrimaryKeyRelatedField(queryset=Tag.objects.all(), many=True)
class Meta:
model = Resource
fields = ('id', 'type', 'uri', 'tags', 'created_date')
depth = 1
不幸的是,似乎没有办法在运行时覆盖depth 属性。我目前的解决方案是继承“浅”序列化程序并覆盖它们的 Meta 类以调整深度。
class ResourceNestedSerializer(ResourceSerializer):
class Meta(ResourceSerializer.Meta):
depth = 2
在我看来:
if nested:
serializer = ContainerNestedSerializer(containers, many=True)
else:
serializer = ContainerSerializer(containers, many=True)
return Response(serializer.data)
在调用serializer.data之前有什么方法可以调整depth?
【问题讨论】:
标签: python django rest serialization django-rest-framework