我有两个模型如下所述:
class Post(models.Model):
title = models.CharField(max_length=60)
details = models.TextField()
class Comment(models.Model):
blog_post = models.ForeignKey(Post)
name = models.CharField(max_length=40)
comment = models.TextField()
我想写一个视图,显示Post中的所有条目以及每个帖子的相应评论数。
我知道我可以通过以下方式获得评论:Comment.objects.filter(blog_post__title__icontains='xxx').count()
我只想输出一个HTML页面,其中显示所有帖子,每个帖子应该有相应的评论计数(只是计数,而不是实际的评论条目/数据)。我该怎么做呢?如何将每个帖子的帖子列表和相应的评论计数传递给模板?
答案 0 :(得分:2)
您使用aggregation。当你收到你的帖子列表时,你告诉Django你想同时计算相关的评论:
from django.db.models import Count
posts = Post.objects.all().annotate(comment_count=Count('comment'))
现在posts
查询集中的每个帖子都有一个comment_count
属性,即相关评论的数量。