这是我的模特:
class Story(models.Model):
writer = models.ForeignKey(UserProfile, blank=False, null=True)
.
.
.
class Comment(models.Model):
on_story = models.ForeignKey(Story, related_name="comments", blank=False, null=False)
.
.
.
如何获取与特定故事相关的评论的数量,并将其注入视图?
答案 0 :(得分:3)
如果您需要多个故事的评论计数,我强烈建议您使用annotations而不是在每个故事上调用comments.count()
:
from django.db.models import Count
stories = Story.objects.order_by("-date_published").annotate(comment_count=Count('comments'))
这将减少从N + 1到1的查询数量,使用连接在数据库中执行COUNT
,而不是对每个计数执行单独的查询。然后可以按如下方式访问计数:
{% for story in stories %}
{{ story.comment_count }}
{% endfor %}
答案 1 :(得分:-1)
您可以使用QuerySet.count
到comments
属性(related_name)。
在视图功能中使用以下内容:
comment_count = specific_story.comments.count()
# do something with `comment_count`
更新在模板中使用.comments.count
:
{% for story in stories %}
... {{ story.comments.count }} ...
{% endfor %}