Django REST Frameworkに再挑戦 その15 Update & Destroy Mixins
概要
Django REST Frameworkに再挑戦 その15 Update & Destroy Mixins
参考サイト
www.codingforentrepreneurs.com
Update & Destroy Mixins
- Mixinの公式サイトの解説を確認する。
Generic views - Django REST framework
- CommentEditAPIViewを定義する。
class CommentEditAPIView(RetrieveAPIView): queryset = Comment.objects.filter(id__gte=0)#greater than serializer_class = CommentDetailSerializer
- urls.pyにeditviewを追記する。
url(r'^(?P<pk>\d+)/edit/$', CommentEditAPIView.as_view(), name='edit'),
/api/comments/5/edit/
にアクセスするとdetailviewと同じviewが表示される。comments/api/views.pyに、
from rest_framework.mixins import DestroyModelMixin, UpdateModelMixin
を追記する。DestroyModelMixin, UpdateModelMixinを継承してコードを追記する。これで、editと、deleteができるようになる。
class CommentEditAPIView(DestroyModelMixin, UpdateModelMixin, RetrieveAPIView): queryset = Comment.objects.filter(id__gte=0)#greater than serializer_class = CommentDetailSerializer def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs)#updatemodelmixinを継承することにより、利用できるメソッド def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs)#destroymodelmixinを継承することにより、利用できるメソッド
- EditView用のSerializerを作成する。
class CommentEditSerializer(ModelSerializer): class Meta: model = Comment fields = [ 'id', 'content', 'timestamp', ]
- CommentEditAPIViewのserializer_classを、CommentEditSerializerに変更すれば完了!