6

我有一个评论表,它有一个表的外键Blog。此表用于对博客进行评论,并且可以对评论进行回复。为此,我使用parent了将决定回复的评论的列。

现在的问题是这个表的对象,

comment_obj = comment.objects.filter(blog=blog_obj).order_by("created")

我没有得到想要的输出。我想知道如何显示评论以及在每条评论下对该评论的回复。

模型.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 %}

但这不起作用。请帮忙。我想在不使用任何应用程序的情况下做到这一点。

4

1 回答 1

8

使用可选参数将相关名称添加到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_objBlog对象)

{% for comment in blog_obj.comments.all %}
    {{ comment.comment }}
    {% for reply in comment.replies.all %}
        {{ reply.comment }}
    {% endfor %}
{% endfor %}
于 2013-06-17T22:26:59.263 回答