将GROUP BY添加到django查询

时间:2012-10-01 21:02:23

标签: mysql sql django django-models

我有以下查询:

titles = Title.objects.all()

在某些情况下,我需要为此查询获取DISTINCT ('title')。使用MySQL后端时,Django不允许distinct('title')

基本上,我想要做的是:

titles = titles.extra('GROUP BY title')

我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:1)

您是否尝试过使用.distinct()方法?

titles = Title.objects.values('title','other_columns_you_care_about_and_not_distinct').distinct()

如果您在.distinct()上执行.all(),则会返回与您开始时一样多的行,前提是您的ID列是唯一的。因此,您只需在.values()

中撤回所需的列

答案 1 :(得分:0)

您需要[annotate][1]分组

titles = titles.annotate(Count("title")).order_by()