代码之家  ›  专栏  ›  技术社区  ›  Daniel Quinn

Django中的简单分组(不计数)

  •  2
  • Daniel Quinn  · 技术社区  · 16 年前

    如果这是原始的sql,那就不费吹灰之力了,但是在django中,这是很难找到的。我想要的是:

    SELECT
      user_id
    FROM
      django_comments
    WHERE
      content_type_id = ? AND
      object_pk = ?
    GROUP BY
      user_id
    

    最后两行才是问题所在。我想用“django方式”来做这件事,但我发现的唯一一件事是提到了聚合和注释,我认为这并不能解决这个问题……是吗?如果有人能给我解释一下,我会非常感激的。

    2 回复  |  直到 16 年前
        1
  •  2
  •   maersu    16 年前

    据我所知,你想让所有评论的作者 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\u 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')
    

    希望有帮助。

        2
  •  0
  •   Daniel Roseman    16 年前

    在django中,这也是一个不需要考虑的问题,但是你需要停止用sql来思考,而是问问自己真正想要实现什么。

    “我想要一份所有发表评论的用户ID的列表。”好吧,那就是你想要的:

     Comment.objects.filter(
        content_type_id=foo, object_pk=bar
     ).values_list('user_id', flat=True).distinct()