ModelViewSetやGenericViewSetのcreateなどの関数を継承したいとき
今回はDjango REST frameworkのModelViewSetやGenericViewSetでcreateなどの関数を継承して他の処理を加えたい場合どのようにすれば良いのかについてご紹介いたします。
ModelViewSetやGenericViewSetのcreateなどの関数を継承したいとき
ModelViewSetやGenericViewSetで、createやupdate、listなどの関数を継承して別の処理を加えたい場合があると思います。
一般的にModelViewSetを使った場合、Viewは次のような書き方をしますね。
1 2 3 |
class TestsViewSet(ModelViewSet): queryset = Test.objects.filter() serializer_class = TestSerializer |
ここにcreateやupdate、listなどの関数を継承して別の処理を加えたい場合、次のような関数を書きます。
下記はcreateの関数を継承して書く場合です。
1 2 3 4 5 6 7 |
class TestsViewSet(ModelViewSet): queryset = Test.objects.filter() serializer_class = TestSerializer def create(self, request, *args,**kwargs): queryset = Test.objects.filter() serializer = TestSerializer(queryset, many=True) |
一般的なAPIViewを使った場合と同じ書き方ですね。
updateやlistの関数を継承したい場合でも上記と同じように書きましょう。
ModelViewSetだけでなく、GenericViewSet+mixinsを使った場合でも同じ書き方をします。
終わりに
今回はDjango REST frameworkのModelViewSetやGenericViewSetでcreateなどの関数を継承して他の処理を加えたい場合どのようにすれば良いのかについてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません