4
私はdepth
がそれぞれのMeta
クラスに設定されたネストされたシリアライザのセットを持っています。ビューで渡されるパラメータに基づいてプログラムの深度を変更したいと思います。Django Rest Frameworkのネストされたシリアライザで深さを動的に変更する方法は?
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
属性をオーバーライドする方法があるようには思えません。私の現在の解決策は、「浅い」シリアライザを継承し、メタクラスをオーバーライドして深さを調整することでした。
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
を調整する方法はありますか?