5

汎用ビューを使用してobject_list一連の記事をすばやく一覧表示しています。各記事にはコメントが添付されています。クエリは、Count()コメントの数に対する注釈を使用し、次にorder_by()その注釈付きの番号を使用します。

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

コメントはdjango.contrib.commentsフレームワークの一部であり、Generic Relationship を介してモデルに添付されます。Article モデルに明示的な逆ルックアップを追加しました。

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 に答える