我在搭建一个嵌套的Django评论系统。思路很简单,所有属于同一个根注释的子注释都会嵌套在根注释下,不管子注释属于哪一层或哪一层。
Root comment
A reply to Root
B reply to A
C reply to B
D reply to C
E reply to A
model.py:
class Comment(models.Model):
"""
评论表
"""
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',to_field='id',on_delete=models.CASCADE)
content = models.CharField(verbose_name='评论内容', max_length=255)
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
parent_comment = models.ForeignKey('self', null=True, on_delete=models.CASCADE)
def __str__(self):
return self.content
view.py:
def newsDetailView(request, news_pk):
......other code......
comments_list = Comment.objects.filter(news_id=news_pk).order_by('-nid')
return render(request, "news/pages/index-inner.html", {
'comments_list': comments_list,
})
模板:
{% for comment in comments_list %}
{% if comment.comment_set.all and not comment.parent_comment %}
<div class='root-sub-group'>
<div class="root-comment" >
{{comment.content}}
</div>
{% for reply in comment.comment_set.all %}
<div class="sub-comment">
{{reply.content}}
<div/>
{% endfor %}
</div>
{% endif %}
<!--now if the comments doesn't has both sub comments and parent comment then it should be a single root comment-->
{% if not comment.comment_set.all and not comment.parent_comment %}
<div class="single-root" >
{{comment.content}}
</div>
{% endif %}
{% endfor %}
我的问题是它只显示第二级的评论,第三级不显示。
Root comment
A reply to Root
F reply to Root
有朋友可以帮忙吗?我知道这有点难。谢谢!