diff --git a/apps/utils/mixins.py b/apps/utils/mixins.py index ebe2bd95..e882f098 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 @@ -174,6 +174,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 """