From 7a152d359144209e25cd8f47c25496190884e70e Mon Sep 17 00:00:00 2001 From: 1638245306 <1638245306@qq.com> Date: Fri, 28 Mar 2025 15:08:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E6=B7=BB=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=94=A8=E6=88=B7=E9=80=92=E5=BD=92=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 Department模型中添加了 _recursion 类方法,用于递归获取指定属性值 - 新增 get_region_name 类方法,用于获取用户的所有上级部门名称 - 该功能可以用于显示用户所在的完整部门路径 --- backend/dvadmin/system/models.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py index 5d500b7..d6c229b 100644 --- a/backend/dvadmin/system/models.py +++ b/backend/dvadmin/system/models.py @@ -122,6 +122,27 @@ class Dept(CoreModel): help_text="上级部门", ) + @classmethod + def _recursion(cls, instance, parent, result): + new_instance = getattr(instance, parent, None) + res = [] + data = getattr(instance, result, None) + if data: + res.append(data) + if new_instance: + array = cls._recursion(new_instance, parent, result) + res += array + return res + + @classmethod + def get_region_name(cls, obj): + """ + 获取某个用户的递归所有部门名称 + """ + dept_name_all = cls._recursion(obj, "parent", "name") + dept_name_all.reverse() + return "/".join(dept_name_all) + @classmethod def recursion_all_dept(cls, dept_id: int, dept_all_list=None, dept_list=None): """