From 97b001f4f7feaf12e0260bb6e434f6aa6d392a7e Mon Sep 17 00:00:00 2001 From: AliRn76 Date: Wed, 14 Jul 2021 00:22:33 +0430 Subject: [PATCH] Add new generic class for listing a queryset or retrieving, creating, updating or deleting a model instance --- rest_framework/generics.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 55cfafda4..4dd42a2fc 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -289,3 +289,32 @@ class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs) + +class RetrieveListCreateUpdateDestroyAPIView(mixins.RetrieveModelMixin, + mixins.ListModelMixin, + mixins.CreateModelMixin, + mixins.UpdateModelMixin, + mixins.DestroyModelMixin, + GenericAPIView): + """ + Concrete view for listing a queryset or retrieving, creating, updating or deleting a model instance, + """ + def get(self, request, *args, **kwargs): + if kwargs.get(self.lookup_field): + return self.retrieve(request, *args, **kwargs) + else: + return self.list(request, *args, **kwargs) + + def post(self, request, *args, **kwargs): + return self.create(request, *args, **kwargs) + + def put(self, request, *args, **kwargs): + return self.update(request, *args, **kwargs) + + def patch(self, request, *args, **kwargs): + return self.partial_update(request, *args, **kwargs) + + def delete(self, request, *args, **kwargs): + return self.destroy(request, *args, **kwargs) + +` \ No newline at end of file