From 62b012b69054edac02af80ab15b7aa8c1cdc6275 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 3 Jun 2024 08:36:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20base=20=E5=A2=9E=E5=8A=A0get=5Fqueryset?= =?UTF-8?q?=5Fcustom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/viewsets.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/utils/viewsets.py b/apps/utils/viewsets.py index b7441b99..e7e7c440 100755 --- a/apps/utils/viewsets.py +++ b/apps/utils/viewsets.py @@ -83,14 +83,19 @@ class CustomGenericViewSet(MyLoggingMixin, GenericViewSet): if not hasattr(self, 'filterset_fields'): self.filterset_fields = self.select_related_fields - def filter_custom(self, queryset): + def get_queryset_custom(self, queryset): """ 自定义过滤方法可复写 """ + if self.action in ["list", "retrieve", "create", "update", "partial_update", "destroy"]: + return queryset + elif hasattr(self, f'get_queryset_{self.action}'): + return getattr(self, f'get_queryset_{self.action}')(queryset) return queryset def filter_queryset(self, queryset): queryset = super().filter_queryset(queryset) + # 用于性能优化 if self.select_related_fields: queryset = queryset.select_related(*self.select_related_fields) if self.prefetch_related_fields: @@ -108,7 +113,7 @@ class CustomGenericViewSet(MyLoggingMixin, GenericViewSet): def get_queryset(self): queryset = super().get_queryset() - queryset = self.filter_custom(queryset) + queryset = self.get_queryset_custom(queryset) if self.data_filter: user = self.request.user if user.is_superuser: @@ -194,8 +199,7 @@ class CustomModelViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomListM for k, v in self.perms_map.items(): if v not in ALL_PERMS and v != '*': ALL_PERMS.append(v) - - + @swagger_auto_schema(request_body=ComplexSerializer, responses={200: {}}) @action(methods=['post'], detail=False, perms_map={'post': '*'}) def cquery(self, request):