【问题标题】:Add GROUP BY to django query将 GROUP BY 添加到 django 查询
【发布时间】:2012-10-01 21:02:23
【问题描述】:
我有以下疑问:
titles = Title.objects.all()
在某些情况下,我需要为此查询获取DISTINCT ('title')。 Django 在使用 MySQL 后端时不允许使用distinct('title')。
基本上,我想做的是:
titles = titles.extra('GROUP BY title')
我该如何正确地做到这一点?
【问题讨论】:
标签:
mysql
sql
django
django-models
【解决方案1】:
您是否尝试过使用.distinct() 方法?
titles = Title.objects.values('title','other_columns_you_care_about_and_not_distinct').distinct()
如果您对.all() 执行.distinct(),您将返回与开始时一样多的行,当然前提是您的 id 列是唯一的。因此,您只需在.values() 中拉回您需要的列。
【解决方案2】:
你需要[annotate][1]来分组
titles = titles.annotate(Count("title")).order_by()