From 89cbab8258eb95ec64f1d570cfec39d1016a100e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 31 Dec 2024 15:31:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20base=20CustomRetrieveModelMixin=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=B7=BB=E5=8A=A0add=5Finfo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/mixins.py | 18 +++++++++++++++++- apps/utils/viewsets.py | 5 +++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/apps/utils/mixins.py b/apps/utils/mixins.py index c7595057..f639699b 100755 --- a/apps/utils/mixins.py +++ b/apps/utils/mixins.py @@ -1,5 +1,5 @@ import uuid -from rest_framework.mixins import CreateModelMixin, UpdateModelMixin, DestroyModelMixin, ListModelMixin +from rest_framework.mixins import CreateModelMixin, UpdateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin import ast import ipaddress import traceback @@ -176,6 +176,22 @@ class BulkDestroyModelMixin(DestroyModelMixin): self.perform_destroy(instance) return Response(status=204) + +class CustomRetrieveModelMixin(RetrieveModelMixin): + + def retrieve(self, request, *args, **kwargs): + instance = self.get_object() + serializer = self.get_serializer(instance) + data = self.add_info_for_item(serializer.data) + return Response(data) + + def add_info_for_item(self, data): + """给dict返回数据添加额外信息 + + 给dict返回数据添加额外信息 + """ + return data + class CustomListModelMixin(ListModelMixin): @swagger_auto_schema(manual_parameters=[ diff --git a/apps/utils/viewsets.py b/apps/utils/viewsets.py index 986336c1..6de001ac 100755 --- a/apps/utils/viewsets.py +++ b/apps/utils/viewsets.py @@ -8,7 +8,8 @@ from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet from apps.system.models import DataFilter, Dept -from apps.utils.mixins import MyLoggingMixin, BulkCreateModelMixin, BulkUpdateModelMixin, BulkDestroyModelMixin, CustomListModelMixin +from apps.utils.mixins import (MyLoggingMixin, BulkCreateModelMixin, BulkUpdateModelMixin, + BulkDestroyModelMixin, CustomListModelMixin, CustomRetrieveModelMixin) from apps.utils.permission import ALL_PERMS, RbacPermission, get_user_perms_map from apps.utils.queryset import get_child_queryset2, get_child_queryset_u from apps.utils.serializers import ComplexSerializer @@ -183,7 +184,7 @@ class CustomGenericViewSet(MyLoggingMixin, GenericViewSet): return queryset.filter(create_by=self.request.user) class CustomModelViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomListModelMixin, - RetrieveModelMixin, BulkDestroyModelMixin, CustomGenericViewSet): + CustomRetrieveModelMixin, BulkDestroyModelMixin, CustomGenericViewSet): """ 增强的ModelViewSet """