在python中从表动态创建嵌套字典

2024-09-30 06:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想制作一个动态菜单,其中包含使用TEMPLATE_CONTEXT_处理器存储在数据库中的值的子菜单

“我的菜单:

-short_name
-description
-url
-father(ForeignKey(self,null=True))

我的条目可以是这样的:

^{pr2}$

我想创建一个这样的字典:

{'menu':[
    {'name':'Home','url':reverse('home')},
    {'name':'Administration','url':reverse('admin'),'menu':[
          {'name':'Users','url':reverse('users')},
          {'name':'Warehouses','url':reverse('warehouses')},
    ]},
    {'name':'Products','url':reverse('products'),'menu':[
          {'name':'New Product','url':reverse('newProduct')},
          {'name':'Report','url':reverse('productReport')},
    ]},
    {'name':'Blog','url':reverse('blog')},
    ...
]}

然后我可以在模板中创建动态菜单, 你知道怎么做这个吗?在

我试着把字典改成这样:

menudb = Menu.objects.filter(perfil__usuario__username=request.user.username)
    if menudb.count()>0:
        menus = {menu:[]}
        for m in menudb:
            data = {}
            data["name"]=m.name
            data["url"]=reverse(m.url)
            if m.father is not None:
                subs = {menu:[]}
                for sub in m.father:
                    subm = {}
                    subm["name"] = sub.name
                    subm["url"] = reverse(sub.url)
                    subs["menu"].append(subm)
                data["menu"]=sub
            menus["menu"].append(data)

Tags: nameurlfordataif字典菜单username

热门问题