モデルのクエリセットにコメントの数に注釈を付けようとしています。
私はこれを次のようなものの1つとして行うことができ、それは機能します:
entry_type はコンテンツ タイプ オブジェクトです。
popular_posts = Post.objects.all().annotate(\
comment_count=Sum("id")).extra(select={
'comment_count': """SELECT COUNT(*) FROM django_comments
WHERE django_comments.object_pk = Blogger_post.id
AND django_comments.content_type_id = %s"""
}, select_params=(entry_type.id,)).order_by('-comment_count')
しかし、私が試してみると
popular_posts = Post.custom_manager.all()
#custom_manager
class PostManager(models.Manager):
def get_query_set(self):
return super(PostManager,self).get_query_set().all().annotate(\
comment_count=Sum("id")).extra(select={
'comment_count': """SELECT COUNT(*) FROM django_comments
WHERE django_comments.object_pk = Blogger_post.id
AND django_comments.content_type_id = %s"""
}, select_params=(entry_type.id,)).order_by('-comment_count')
comment_count がありますが、期待値ではありません。
私は何を間違っていますか?
編集:これの問題が何であるかはまだわかりませんが、これは機能します
class PostManager(models.Manager):
def get_query_set(self):
return super(PostManager,self).get_query_set().all().extra(select={
'comment_count': """SELECT COUNT(*) FROM django_comments
WHERE django_comments.object_pk = Blogger_post.id
AND django_comments.content_type_id = %s"""
}, select_params=(entry_type.id,)).order_by('-comment_count')