From e2ec9625b4fe375d3c3064d9ac19271f5437a2c3 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 19 Dec 2025 13:59:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20base=20userfilter=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=BD=92=E5=B1=9E=E4=BA=8E=E8=AF=A5=E9=83=A8=E9=97=A8=E5=8F=8A?= =?UTF-8?q?=E4=BB=A5=E4=B8=8B=E9=83=A8=E9=97=A8=E7=9A=84=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/system/filters.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/system/filters.py b/apps/system/filters.py index be208b7f..b68d5caf 100755 --- a/apps/system/filters.py +++ b/apps/system/filters.py @@ -1,8 +1,12 @@ from django_filters import rest_framework as filters from .models import Dept, User +from apps.utils.queryset import get_child_queryset_u +from rest_framework.exceptions import ParseError class UserFilterSet(filters.FilterSet): + ubelong_dept__name = filters.CharFilter(label='归属于该部门及以下(按名称)', method='filter_ubelong_dept__name') + ubelong_dept = filters.CharFilter(label='归属于该部门及以下', method='filter_ubelong_dept') class Meta: model = User @@ -19,6 +23,14 @@ class UserFilterSet(filters.FilterSet): 'posts__name': ["exact", "contains"], 'posts__code': ["exact", "contains"], } + + def filter_ubelong_dept__name(self, queryset, name, value): + depts = get_child_queryset_u(Dept.objects.filter(name=value)) + return queryset.filter(belong_dept__in=depts) + + def filter_ubelong_dept(self, queryset, name, value): + depts = get_child_queryset_u(Dept.objects.filter(id=value)) + return queryset.filter(belong_dept__in=depts) class DeptFilterSet(filters.FilterSet):