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

django-rest-frameworkでModelViewSetを用いてViewを作成した場合、ListやRetrieveなどでSeriarizersを切り替えたい場合があります。

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

目次

サンプルコード

適当なサンプルモデルを用意して、複数の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でアクション毎に設定が可能です。

参考

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる