我正在尝试使用Django的注释功能将相关模型的计数添加到查询集。但是,我不想要完整的相关对象数,我只想对活动数进行计数(即“is_active = True”)。我无法弄清楚如何过滤计数。我如何使用annotate()来计算Django中相关模型的子集?
(简化)相关机型:
class Post(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=80)
body = models.TextField()
class Comment(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
comment_body = models.CharField(max_length=80)
is_active = models.BooleanField(default=True)
在视图中,我试图来标注查询集:与后
queryset=Post.objects.all().annotate(num_comments=Count('comment', distinct=True))
以上计数的所有意见,而我只想数一下“is_active”。 Google和Django文档在这里帮不了我。有没有人有解决这个问题?
注意:当我在同一个查询集上混合使用.annotate()和.extra()时,遇到了一些麻烦(例如,额外数据上的“order_by”失败)。我最终将annotate()中的count移到了extra()函数中,然后我的“order_by”工作。我可以澄清是否有人遇到类似的问题。 – mitchf 2010-09-30 19:17:15