在Django中,如何从一个表中选择数据并从相应的表中计数并输出相同的数据?

时间:2011-01-21 16:24:31

标签: django django-models

我有两个模型如下所述:

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页面,其中显示所有帖子,每个帖子应该有相应的评论计数(只是计数,而不是实际的评论条目/数据)。我该怎么做呢?如何将每个帖子的帖子列表和相应的评论计数传递给模板?

1 个答案:

答案 0 :(得分:2)

您使用aggregation。当你收到你的帖子列表时,你告诉Django你想同时计算相关的评论:

from django.db.models import Count
posts = Post.objects.all().annotate(comment_count=Count('comment'))

现在posts查询集中的每个帖子都有一个comment_count属性,即相关评论的数量。