現在DRFにてAPIを作成しております。
ふたつのserializerを用いてjsonデータをネストさせたいと考えているのですがうまくいかず困っております。
親serializerの仮想的に作ったfieldのなかにリスト形式で子serializerを通したfieldsとデータの一覧をしたいのですが、仮想フィールドでネストされたjsonを作成することは可能なのでしょうか?(GET時)
ちなみに空で値すら帰ってこない状況です。
modelviewsetを使用しているのですが、list関数をオーバライドしているのですが、知識が浅くどうすればいいかわからない状態です。
実現したいjson
{ properties_data: [ { name: xxxx, age: 15 }, { name: xxxx, age: 20 }, ] }
seralizer.py
class SampleSerializer(serializers.Modelserialzier): class Meta: model = Sample fields = ['name', 'age'] class SampleGetSerializer(serializers.Serializer): request_data = PropertyFromCsvSerializer(many=True, read_only=True) ← モデルに存在しないフィールド
Views.py
class SampleViewSet(ModelViewSet): serializer_class = PropertyFromCsvSerializer http_method_names = ['get', 'post', 'head', 'put', 'patch'] filter_class = SampleFilter filter_backends = [filters.DjangoFilterBackend] def list(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset()) page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = PropertyFromCsvGetSerializer(queryset, many=True) print(serializer) return Response(serializer.data)
Filter等も使用するのでオーバライドするとしたらfilterに影響しないような書き方をしたいです、、、
何卒ご教示よろしくお願いいたします。
あなたの回答
tips
プレビュー