【发布时间】:2014-07-25 02:03:21
【问题描述】:
我想在 Django 中进行 GROUP BY。我在 Stack Overflow 上看到了推荐的答案:
Member.objects.values('designation').annotate(dcount=Count('designation'))
这可行,但问题是您得到的是ValuesQuerySet 而不是QuerySet,因此查询集没有给我完整的对象,而只是给我特定的字段。我想得到完整的对象。
当然,既然我们在分组,我们需要选择从每个组中取出哪个对象;我想要一种指定对象的方法(例如,在某个字段中取最大值等)
有人知道我该怎么做吗?
【问题讨论】:
-
几年前我在博客上写过一个类似的问题:blog.roseman.org.uk/2010/08/14/getting-related-item-aggregate - 这对你有帮助吗?
-
使用原始查询怎么样?我发现在做更复杂的事情时,最好跳过 ORM。
-
@DanielRoseman - 你应该用你的建议来回答这个问题,而不是仅仅发表评论。您可能希望将您博客文章的摘录放在答案中。
-
@DanielRoseman 这能行吗?
Document.objects.filter(id__in=Document.objects.order_by('title').distinct('title')).order_by('anything_you_want')?试试看。