我试图显示用户在他们评论的所有故事上发布的所有评论的列表。目前我有这个:
{% for story in all_user_stories %}
{{ story.title }}
{{ story.comments.all }}
{% endfor %}
有一个故事和一个评论数据库表,其中评论字段是评论表中的一个外键,其中包含相关名称" comments"。问题是" story.comments.all" line刚收到用户评论的所有故事的所有评论,而不仅仅是用户对特定故事的评论。我查看了文档,但我找不到合适或好的方法。
有人知道我怎么能以一种干净的方式做到这一点,或者如果有的话?我是否已经从评论表中创建了另一个查询集,在这种情况下,我将如何一次迭代这两个查询集。我见过人们这样做的几种方式,但后来查询集具有相同的数字,这不是这里的情况。
更新
这是故事和评论模型:
class Story(models.Model):
user = models.ForeignKey(User)
date_added = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
title = models.CharField(max_length=150)
description = models.CharField(blank=True, null=True, max_length=2000)
story_text = models.TextField()
category = models.ForeignKey(Category, blank=True, null=True)
class Comment(models.Model):
user = models.ForeignKey(User)
date_added = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
emailOnReply = models.NullBooleanField(blank=True, null=True)
comment_text = models.TextField()
story = models.ForeignKey(Story, related_name="comments")
def __unicode__(self):
return self.comment_text
我在代码中引用的注释字段是注释表中故事模型字段中的related_name参数,这将返回注释,但它返回所有这些注释而不仅仅是与故事相关的注释for循环正在进行。用户模型是djangos身份验证系统的用户模型。
这是相关的HTML代码:
<table class="table table-hover">
<thead>
<tr>
<th>Title</th>
<th>Date added</th>
<th>Last modified</th>
<th>Publicity</th>
<th>Comments</th>
<th>Votes</th>
<th>Views</th>
</tr>
</thead>
<tbody>
<tr>
{% for story in all_user_story %}
<td><a href="/story/display/{{ story.id }}"> {{ story.title }}</td>
<td>{{ story.date_added }}</td>
<td>{{ story.date_modified }}</td>
<td>{{ story.story_access_level }}</td>
<td>
{{ story.comments.all }} <----- How to only display the comment(s) related to this specific story the for loop is looping through
</td>
<td><img src="{% static 'images/arrow_up.png' %}"> {{ story.votes }} <img src="{% static 'images/arrow_down.png' %}"></td>
<td>
{% if story.views %}
{{ story.views }}
{% else %}
0 {% endif %}
</td>
<td> <a href="/user/{{ user }}/story/{{ story.id }}/edit">Edit story</a></td>
</tr>
{% endfor %}
</tbody>
</table
答案 0 :(得分:1)
您可以使用“相关管理员”查找故事的相关评论(在Django文档中有关于here的更多信息)。
代码如下所示:
{% for story in all_user_stories %}
{{ story.title }}
{% for comment in story.comment_set.all %}
{{ comment.comment_text }}
{% endfor %}
{% endfor %}
在查找特定故事的评论时,还应该可以使用“相关名称”story.commments
代替story.comment_set
:
{% for story in all_user_stories %}
{{ story.title }}
{% for comment in story.comments.all %}
{{ comment.comment_text }}
{% endfor %}
{% endfor %}