在django中做"group by"但仍保留完整的对象

Ram*_*hum 8 python sql django orm

我想在Django中做一个GROUP BY.我在Stack Overflow上看到了建议:

Member.objects.values('designation').annotate(dcount=Count('designation'))
Run Code Online (Sandbox Code Playgroud)

这是有效的,但问题是你得到一个ValuesQuerySet而不是一个QuerySet,所以查询集不是给我完整的对象,而只是给我特定的字段.我想得到完整的物品.

当然,既然我们要分组,我们需要选择从每个组中取出哪个对象; 我想要一种方法来指定对象(例如,在某个字段中选择具有最大值的那个,等等)

有谁知道我怎么做到这一点?

con*_*man 0

听起来您不一定需要 GROUP BY,而只是想将您的选择限制为每个字段的一项(例如,某个字段的 MAX 值)。

您可以尝试按字段获取不同的对象,例如

在 Postgres 中

Member.objects.order_by('designation').distinct('designation')

在任何其他数据库中

Member.objects.distinct('designation')

https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.distinct