对组织树进行递归查询.
提供当前组织树节点的上级组织id. 我这里简称 p_id.
def get(request, *args, **kwargs):
if request.method == 'GET':
need_set = {
"p_id",
}
parser_dict = {}
for item in need_set:
item_res = request.GET.get(item, None)
if not item_res:
return JsonResponse({'code': 1})
else:
parser_dict.update({item: item_res})
if len(parser_dict):
res_all = (parser_role_tree.find_role_all({"org_id": {'$exists': True}}))
recursion_list = get_list(res_all=res_all, p_id=parser_dict['p_id'])
for item in res_all:
if item['org_id'] == parser_dict['p_id']:
item.update({'sons': recursion_list})
return JsonResponse({"data":item}, safe=False)
return JsonResponse({"msg":1}, safe=False)
def get_list(res_all, p_id):
list_a = []
for item in res_all:
if item['p_id'] == p_id:
list_a.append(item)
item.update({'sons': get_list(res_all=res_all, p_id=item['org_id'])})
return list_a
提供当前组织树节点的本级组织id. 我这里简称 org_id.
def get(request, *args, **kwargs):
if request.method == 'GET':
need_set = {
"org_id",
}
parser_dict = {}
for item in need_set:
item_res = request.GET.get(item, None)
if not item_res:
return JsonResponse({'code': 1})
else:
parser_dict.update({item: item_res})
if len(parser_dict):
res_all = (parser_role_tree.find_role_all({"org_id": {'$exists': True}}))
recursion_list = get_list(res_all=res_all, p_id=parser_dict['org_id'])
for item in res_all:
if item['org_id'] == parser_dict['org_id']:
item.update({'sons': recursion_list})
return JsonResponse({'data': item}, safe=False)
return JsonResponse({'msg': '查询失败'}, safe=False)
def get_list(res_all, p_id):
list_a = []
for item in res_all:
if item['p_id'] == p_id:
list_a.append(item)
item.update({'sons': get_list(res_all=res_all, p_id=item['org_id'])})
return list_a
结果展示
{
"data": {
"_id": "8796e0d2a75ee0d84c1fbcb5ac4e7cc5",
"org_id": "1649237314",
"org_name": "1",
"p_id": "99999",
"create_time": 1649237314,
"update_time": 1649237314,
"sons": [
{
"_id": "bbd7664aa4b1d7fbfaa0256b05a78fd1",
"org_name": "6",
"p_id": "1649237314",
"org_id": "a34b95fa8d2b491b1cd91b122ab7a92b",
"create_time": 1649237591,
"update_time": 1649237591,
"sons": [
{
"_id": "e0771f7fde8ef8fdffac57ea8ba01958",
"org_name": "6",
"p_id": "a34b95fa8d2b491b1cd91b122ab7a92b",
"org_id": "f4d194ba8b772aebdeab2732daa72011",
"create_time": 1649238526,
"update_time": 1649238526,
"sons": [
]
},
{
"_id": "fa69c4a650b9454a22ab13c781ede848",
"org_name": "7",
"p_id": "a34b95fa8d2b491b1cd91b122ab7a92b",
"org_id": "ca93ed9207956708a4dad3e8f1ac3b52",
"create_time": 1649238531,
"update_time": 1649238531,
"sons": [
{
"_id": "912872c3548a75c505de3dfd60288902",
"org_name": "7",
"p_id": "ca93ed9207956708a4dad3e8f1ac3b52",
"org_id": "ac5b45ffe0a17239809282ef714d77f6",
"create_time": 1649239187,
"update_time": 1649239187,
"sons": [
]
}
]
}
]
}
]
}
}