【DRF】ModelViewSetでSerializersを切り替える方法

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

DjangoRESTframeworkModelViewSetを用いてViewを作成した場合、ListRetrieveなどでSeriarizersを切り替えたい場合があります。

忘れないように記録しておきます。

Django/DjangoRESTframeworkについて記事まとめ

目次

サンプルコード

適当なサンプルモデルを用意して、複数のseriarizers.pyを作成します。

class SampleSerializers(seriarizers.ModelSerializers):
    class Meta:
        model = sample
        fields = ['id', 'name']


class SampleRetrieveSerializers(seriarizers.ModelSerializers):
    class Meta:
        model = sample
        fields = ['id', 'name', 'detail']

次にviews.pyを作成します。

from .serializers import SampleSerializer, SampleRetrieveSerializer
from .models import Sample

class SampleViewSet(viewsets.ModelViewSet):
    queryset = Sample.objects.all()

    def get_serializer_class(self):
        if self.action == 'retrieve':
            return SampleRetrieveSerializer
        return SampleSerializer

get_serializers_classをオーバーライドしself.actionでアクション毎に設定が可能です。

参考

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次