From 4e9155f09bc3748dda2b89b4c01bffba47c748d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com> Date: Mon, 21 Jul 2025 13:41:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(viewset):=20=E9=80=9A=E8=BF=87=20IDS?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在通用的 ViewSet 中添加 get_by_ids 方法 - 接收 POST 请求,从请求体中获取 ids列表 - 根据 ids 列表查询数据并返回- 若 ids 列表为空或只包含空字符串,则返回空数据 --- backend/dvadmin/utils/viewset.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/dvadmin/utils/viewset.py b/backend/dvadmin/utils/viewset.py index 42948b1..89de67a 100644 --- a/backend/dvadmin/utils/viewset.py +++ b/backend/dvadmin/utils/viewset.py @@ -152,3 +152,13 @@ class CustomModelViewSet(ModelViewSet, ImportSerializerMixin, ExportSerializerMi return SuccessResponse(data=[], msg="删除成功") else: return ErrorResponse(msg="未获取到keys字段") + + @action(methods=['post'], detail=False) + def get_by_ids(self, request): + """通过IDS列表获取数据""" + ids = request.data.get('ids', []) + if ids and ids != ['']: + queryset = self.get_queryset().filter(id__in=ids) + serializer = self.get_serializer(queryset, many=True) + return DetailResponse(data=serializer.data) + return DetailResponse(data=None)