From cbba5a60f4b27bdc0950af71e47092522343df3f Mon Sep 17 00:00:00 2001 From: china_ahhui Date: Tue, 19 Sep 2023 11:45:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=A8=E9=83=A8=E9=97=A8=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=AD=90=E7=BA=A7=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=A4=B1=E6=95=88=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/system/views/user.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py index 47dc4af..1d71c4e 100644 --- a/backend/dvadmin/system/views/user.py +++ b/backend/dvadmin/system/views/user.py @@ -6,6 +6,7 @@ from rest_framework import serializers from rest_framework.decorators import action from rest_framework.permissions import IsAuthenticated from django.db import connection +from django.db.models import Q from application import dispatch from dvadmin.system.models import Users, Role, Dept from dvadmin.system.views.role import RoleSerializer @@ -233,7 +234,7 @@ class UserViewSet(CustomModelViewSet): create_serializer_class = UserCreateSerializer update_serializer_class = UserUpdateSerializer filter_fields = ["name", "username", "gender", "is_active", "dept", "user_type"] - search_fields = ["username", "name", "gender", "dept__name", "role__name"] + search_fields = ["username", "name", "dept__name", "role__name"] # 导出 export_field_label = { "username": "用户账号", @@ -383,7 +384,17 @@ class UserViewSet(CustomModelViewSet): inner(i) if dept_id != '': inner(dept_id) - queryset = Users.objects.filter(dept_id__in=all_did) + searchs = [ + Q(**{f+'__icontains':i}) + for f in self.search_fields + ] if (i:=request.query_params.get('search')) else [] + q_obj = [] + if searchs: + q = searchs[0] + for i in searchs[1:]: + q |= i + q_obj.append(Q(q)) + queryset = Users.objects.filter(*q_obj, dept_id__in=all_did) else: queryset = self.filter_queryset(self.get_queryset()) else: