模型构建
class Columns(models.Model):
name = models.CharField(max_length=10, unique=True, null=False, verbose_name='栏目名称')
alias = models.CharField(max_length=20, null=True, verbose_name='栏目别名')
keyword = models.CharField(max_length=50, null=True, verbose_name='栏目关键字')
desc = models.CharField(max_length=200, null=True, verbose_name='栏目描述')
columns = models.ForeignKey('self', on_delete=models.CASCADE, null=True, default=None, related_name='coll',
verbose_name='栏目父节点')
add_time = models.DateTimeField(auto_now_add=True, verbose_name='发布时间')
后台代码
if request.method == 'GET':
col_list = Columns.objects.all()
back_list = []
group_list = []
for col_root in col_list:
curLevel = [col_root] # 将父栏目放在列表中,方便下一级父栏目添加在列表中
temp = [] # 遍历当前层级时存放的临时节点值
while curLevel:
nextLevel = [] # 下一层树结点
for j in curLevel: #
for col_val in j.col.all():
temp.append(col_val)
if j.coll.all(): # 当前结点是否存在子结点
for level_val in j.coll.all():
nextLevel.append(level_val)
curLevel = nextLevel
back_list.append(len(temp))
for ii in range(len(back_list)):
group_list.append([col_list[ii], back_list[ii]])
print(group_list)
return render(request, 'category.html', {'group_list': group_list})
前端代码
{% for g in group_list %}
<tr>
<td>{{forloop.counter}}</td>
<td>{{g.0.name}}</td>
<td>{{g.0.alias}}</td>
<!--求得节点下面的所有数目-->
<td>{{g.1}}</td>
<td><a href="{% url 'myblog:update_category' %}?id={{g.0.id}}">修改</a> <a
rel="{{g.0.id}}">删除</a></td>
</tr>
{% endfor %}
网友评论