- 前言
- 一、在数据库中将某个树的所有节点查询出来
- 二、利用递归对查询到的数据进行处理,将其处理成树形结构
- 查询结果
前言
数据库:pgsql
关键字段:
id 分类树id
type_name:分类树名称
type_parent:父级分类
根节点的父级分类为空
一、在数据库中将某个树的所有节点查询出来
WITH RECURSIVE dict AS (SELECt * FROM prod_type where type_parent is null and id=1
union SELECt prod_type.* FROM prod_type,dict WHERe prod_type.type_parent = dict.id) SELECt id,type_name,
type_parent FROM dict ORDER BY id
查询结果:
代码如下(示例):
def list_to_tree(self, data):
root = []
node = []
for d in data:
if not d.get('type_parent'):
root.append(d)
else:
node.append(d)
for p in root:
self.add_node(p, node)
# 无子节点
if len(root) == 0:
return node
return root
def add_node(self, root, nodes):
root['children'] = []
for node in nodes:
if node['type_parent'] == root['type_id']:
root['children'].append(node)
# 更新node的children
for i in nodes:
if i['type_parent'] == node['type_id']:
node['children'].append(i)
# 更新children
self.add_node(node, nodes)
return
查询结果



