如何解决如何限制 Django mttp 中递归树的最大深度?
我正在使用 django-mttp。如何限制 recursetree
的最大深度?最大=3
型号:
class Comment(MPTTModel):
"""评论表"""
nid = models.AutoField(primary_key=True)
news = models.ForeignKey(
verbose_name="评论文章",to="News",to_field="id",on_delete=models.CASCADE,)
user = models.ForeignKey(
verbose_name="评论者",to="User",)
content = models.CharField(verbose_name="评论内容",max_length=255)
create_time = models.DateTimeField(verbose_name="创建时间",auto_Now_add=True)
parent = TreeForeignKey(
"self",null=True,blank=True,related_name="children",)
class MPTTMeta:
order_insertion_by = ["create_time"]
模板:
<ul>
{% recursetree comments_list %}
<li>
{{ node.content }}
{{ node.level }}
{% if node.parent %}
<div>{{node.user}} 回复 {{node.parent.user}}</div>
{% endif %}
<button class="button" onclick="myFunction({{node.id}})"> Reply </button>
{% if not node.is_leaf_node %}
<ul class="children list-item">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
解决方法
MPTTModel
的每个实例都有一个 level
属性,可用于限制递归的深度。只需编辑递归模板以不显示高于特定深度的级别:
<ul>
{% with max_depth=3 %}
{% recursetree comments_list %}
<li>
{% if not node.is_leaf_node and node.level < max_depth %}
<ul>{{ children }}</ul>
{% endif %}
</li>
{% endrecursetree %}
{% endwith %}
</ul>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。