Django模板。在同一模型中显示父子关系

问题描述 投票:0回答:1

我正在创建一个django博客,我有一个评论模型,看起来像这样。

class Comment(models.Model):
  content = models.TextField('Comment', blank=False, help_text='Comment * Required', max_length=500)
  post = models.ForeignKey('Post', on_delete=models.CASCADE, blank=False, related_name='comments')
  parent = models.ForeignKey('self', null=True, on_delete=models.SET_NULL, related_name='replies')

我试图用下面的模板代码在评论下面显示回复。

{% for comment in comments %}
  {{ comment.content }}
  {% for reply in comment.replies.all %}
    {{ reply.content }}
  {% endfor %}
{% endfor %}

然而,结果是回复显示了两次。我到底做错了什么?为什么回复会显示两次,而且,回复只能显示一层,即不可能是回复的回复,只能是评论的回复。

django blogs
1个回答
0
投票

你需要在你的模板中做一个检查,如果回复有父级关联,则不显示回复(因为它们将显示在父级评论中)。你可以这样做。

{% for comment in comments %}
  {% if not comment.parent %}
      {{ comment.content }}
      {% for reply in comment.replies.all %}
        {{ reply.content }}
      {% endfor %}
  {% endif %}
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.