fix(用户管理): 修复在部门显示子级的情况下搜索失效的bug

This commit is contained in:
china_ahhui
2023-09-19 11:45:37 +08:00
parent abe7972ab4
commit e1618359d7

View File

@@ -6,6 +6,7 @@ from rest_framework import serializers
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from django.db import connection from django.db import connection
from django.db.models import Q
from application import dispatch from application import dispatch
from dvadmin.system.models import Users, Role, Dept from dvadmin.system.models import Users, Role, Dept
from dvadmin.system.views.role import RoleSerializer from dvadmin.system.views.role import RoleSerializer
@@ -233,7 +234,7 @@ class UserViewSet(CustomModelViewSet):
create_serializer_class = UserCreateSerializer create_serializer_class = UserCreateSerializer
update_serializer_class = UserUpdateSerializer update_serializer_class = UserUpdateSerializer
filter_fields = ["name", "username", "gender", "is_active", "dept", "user_type"] 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 = { export_field_label = {
"username": "用户账号", "username": "用户账号",
@@ -383,7 +384,17 @@ class UserViewSet(CustomModelViewSet):
inner(i) inner(i)
if dept_id != '': if dept_id != '':
inner(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: else:
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
else: else: