5

我正在使用object_list通用视图快速列出一组文章。每篇文章都附有评论。该查询使用注释Count()数来注释评论数,然后order_by()使用注释数。

'queryset': Article.objects.annotate(comment_count=Count('comments')).order_by('-comment_count'),

注释是django.contrib.comments框架的一部分,并通过通用关系附加到模型。我在我的文章模型中添加了一个明确的反向查找:

class Article(models.Models):
   ...
   comments = generic.GenericRelation(Comment, content_type_field='content_type', object_id_field='object_pk')

问题是,这会计算“非活动”评论;有is_public=False或的is_removed=True。如何排除任何不活跃的评论?

4

1 回答 1

2

聚合文档解释了如何执行此操作。您需要使用filter子句,确保将其放在子句之后annotate

Article.objects.annotate(comment_count=Count('comments')).filter(
     comment__is_public=True, comment__is_removed=False
).order_by('-comment_count')
于 2009-12-03T09:35:10.073 回答