【DRF】ModelViewSetでSerializersを切り替える方法
当ページのリンクには広告が含まれています。
DjangoRESTframework
でModelViewSet
を用いてView
を作成した場合、List
やRetrieve
などで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
でアクション毎に設定が可能です。
コメント