fix: base CustomRetrieveModelMixin支持添加add_info

This commit is contained in:
caoqianming 2024-12-31 15:31:54 +08:00
parent 83d8889b5e
commit 89cbab8258
2 changed files with 20 additions and 3 deletions

View File

@ -1,5 +1,5 @@
import uuid import uuid
from rest_framework.mixins import CreateModelMixin, UpdateModelMixin, DestroyModelMixin, ListModelMixin from rest_framework.mixins import CreateModelMixin, UpdateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin
import ast import ast
import ipaddress import ipaddress
import traceback import traceback
@ -176,6 +176,22 @@ class BulkDestroyModelMixin(DestroyModelMixin):
self.perform_destroy(instance) self.perform_destroy(instance)
return Response(status=204) 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): class CustomListModelMixin(ListModelMixin):
@swagger_auto_schema(manual_parameters=[ @swagger_auto_schema(manual_parameters=[

View File

@ -8,7 +8,8 @@ from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet from rest_framework.viewsets import GenericViewSet
from apps.system.models import DataFilter, Dept 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.permission import ALL_PERMS, RbacPermission, get_user_perms_map
from apps.utils.queryset import get_child_queryset2, get_child_queryset_u from apps.utils.queryset import get_child_queryset2, get_child_queryset_u
from apps.utils.serializers import ComplexSerializer from apps.utils.serializers import ComplexSerializer
@ -183,7 +184,7 @@ class CustomGenericViewSet(MyLoggingMixin, GenericViewSet):
return queryset.filter(create_by=self.request.user) return queryset.filter(create_by=self.request.user)
class CustomModelViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomListModelMixin, class CustomModelViewSet(BulkCreateModelMixin, BulkUpdateModelMixin, CustomListModelMixin,
RetrieveModelMixin, BulkDestroyModelMixin, CustomGenericViewSet): CustomRetrieveModelMixin, BulkDestroyModelMixin, CustomGenericViewSet):
""" """
增强的ModelViewSet 增强的ModelViewSet
""" """