Django - 从字典对象列表创建嵌套的html列表
问题描述:
我有一个Python列表的字典形式例如Django - 从字典对象列表创建嵌套的html列表
[{'Parent':'top', 'Child':'obj1', 'Level':0},
{'Parent':'obj1', 'Child':'obj2', 'Level':1},
{'Parent':'obj1', 'Child':'obj3', 'Level':1},
{'Parent':'obj2', 'Child':'obj4', 'Level':2},
{'Parent':'obj4', 'Child':'obj5', 'Level':3}]
我想把它写成基于Parent的嵌套html列表,
- OBJ1
- OBJ2
- OBJ4
- obj5
- OBJ4
- OBJ3
- OBJ2
我怎样才能做到这一点在Django模板
答
快速的解决方案:
def make_list(d):
def append_children(parent, d):
children = [[x['Child']] for x in d if x['Parent'] == parent[0]]
if children:
parent.append(children)
for child in children:
append_children(child, d)
results = [[x['Child']] for x in d if x['Parent'] == 'top']
for parent in results:
append_children(parent, d)
return results
合格名单到这个功能,然后应用unordered_list
过滤结果。此方法的缺点是即使对于一个元素(<ul><li>elem</li></ul>
)也会创建<ul>
列表,但您可以随意使用CSS来更改显示。
如果你想更清晰的HTML,你应该写一个自定义标签或过滤器。
你为什么要创建一个扁平的字典?什么是“原始”信息? – 2011-05-05 10:03:08
来自数据库表 – John 2011-05-05 10:18:27
不是一个真正有用的答案。你能**更新**问题以显示表格和查询吗?我怀疑查询(或模型)可以修复为正确嵌套。 – 2011-05-05 10:45:21