python-django-mongodb-组织树递归查询

对组织树进行递归查询.


提供当前组织树节点的上级组织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):  # 只需要传进来全部数据 和你需要判断的组织id 或者 上级id
    list_a = []
    for item in res_all:  # 遍历全部组织树信息
        if item['p_id'] == p_id:  # 判断 组织id是否等于传经的 p_id 或者 org_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):  # 只需要传进来全部数据 和你需要判断的组织id 或者 上级id
    list_a = []
    for item in res_all:  # 遍历全部组织树信息
        if item['p_id'] == p_id:  # 判断 组织id是否等于传经的 p_id 或者 org_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": [
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python-Django-Vue项目实战是一种常见的全栈发模式,结合了PythonDjango框架和Vue.js前端框架。下面是一个简单的介绍: Python-Django是一个强大的Web开发框架,它使用Python语言编写,提供了一系列的工具和库来简化Web应用程序的开发过程。Django具有高度的可扩展性和灵活性,可以帮助开发者快速构建功能丰富的Web应用。 Vue.js是一个流行的JavaScript前端框架,它专注于构建用户界面。Vue.js具有简单易学的语法和强大的功能,可以帮助开发者构建交互性强、响应迅速的前端应用。 在Python-Django-Vue项目实战中,通常会将Django作为后端框架来处理数据逻辑和业务逻辑,而Vue.js则负责前端页面的展示和用户交互。通过这种方式,可以实现前后端分离,提高开发效率和代码可维护性。 具体的项目实战可以包括以下内容: 1. 构建Django后端:使用Django框架创建后端应用程序,包括定义数据模型、编写视图函数、配置URL路由等。 2. 开发Vue前端:使用Vue.js框架创建前端应用程序,包括设计页面布局、编写组件、处理用户交互等。 3. 数据交互:通过RESTful API或GraphQL等方式,实现前后端数据的交互和通信。 4. 用户认证和权限管理:实现用户注册、登录、权限验证等功能,确保系统的安全性。 5. 数据库操作:使用Django的ORM(对象关系映射)来进行数据库操作,包括增删改查等。 6. 页面美化和响应式设计:使用CSS和Vue.js的样式绑定功能,实现页面的美化和响应式设计。 7. 部署和发布:将项目部署到服务器上,并进行性能优化和安全加固。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值