如果这是原始SQL,那将是一个明智的选择,但在Django中,事实证明这很难找到。我真正想要的是:
SELECT
user_id
FROM
django_comments
WHERE
content_type_id = ? AND
object_pk = ?
GROUP BY
user_id
这是问题的最后两行。我想这样做“Django-way”,但我发现的唯一的事情是提到聚合和注释,我认为这不会解决这个问题......是吗?如果有人能向我解释,我真的很感激。
答案 0 :(得分:2)
据我所知,您希望获得特定GenericObject所有评论的作者(说文章)。
Djangos ORM提供以下relationships 所以解决方案是:
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
User.objects.filter(comment_comments__content_type=ContentType.objects.get(app_label="articles", model="article"), comment_comments__object_pk="12").distinct()
如果您想拥有用户ID,请使用values_list或values
之类的内容User.objects.filter(comment_comments__content_type=ContentType.objects.get(app_label="articles", model="article"), comment_comments__object_pk="12").distinct().values_list('id')
希望它有所帮助。
答案 1 :(得分:0)
Django也是一个明智的选择,但是你需要不再考虑SQL,而是要问问自己你真正希望实现的目标。
“我想要一个已发布评论的所有用户ID的列表。”那么,那就是你要求的:
Comment.objects.filter(
content_type_id=foo, object_pk=bar
).values_list('user_id', flat=True).distinct()