美文网首页Django
django实现栏目自身关联,并查询所有该节点下的文章

django实现栏目自身关联,并查询所有该节点下的文章

作者: 领带衬有黄金 | 来源:发表于2019-01-16 20:07 被阅读0次

模型构建

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 %}

相关文章

网友评论

    本文标题:django实现栏目自身关联,并查询所有该节点下的文章

    本文链接:https://www.haomeiwen.com/subject/ralvdqtx.html