我有一个注释表,它有一个Blog
表的外键。此表用于对博客发表评论,并且可以对评论进行回复。为此,我使用了列parent
,它将决定回复的评论。
现在的问题是,使用此表的对象,
comment_obj = comment.objects.filter(blog=blog_obj).order_by("created")
我没有得到所需的输出。我想知道如何显示评论以及每条评论下对该评论的回复。
Models.py:
class Comment(models.Model):
user = models.ForeignKey(User_info)
blog = models.ForeignKey(Blog)
parent = models.ForeignKey('self', null=True)
comment = models.CharField(max_length=500)
status = models.CharField(max_length=1, default='A')
created = models.DateTimeField(auto_now_add=True)
模板:
{% for comment in comment_obj %}
<li>
{{ comment.comment }} - {{ comment.created }}
{% for reply in comment.Comment_set.all %}
<ul>
{{ reply.comment }} - {{ reply.created }}
</ul>
{% endfor %}
</li>
{% endfor %}
但这不起作用。请帮忙。我想这样做而不使用任何应用程序。
答案 0 :(得分:4)
使用可选参数向related_name添加ForeignKey,以简化操作:
class comment(models.Model):
user = models.ForeignKey(User_info)
blog = models.ForeignKey(Blog, related_name='comments')
parent = models.ForeignKey('self', null=True, related_name='replies')
模板:(假设blog_obj
是Blog
对象)
{% for comment in blog_obj.comments.all %}
{{ comment.comment }}
{% for reply in comment.replies.all %}
{{ reply.comment }}
{% endfor %}
{% endfor %}