GROUP BY单列而不做原始sql

时间:2014-11-19 03:34:09

标签: python django

我想使用mysql后端在django中做一个简单的GROUP BY雕像(它不支持django ORM中列上的GROUP BY)。我通常使用以下方法来执行此操作:

Cue.objects.raw("SELECT * FROM main_cue GROUP BY group_id")

有没有办法在不使用.raw()的情况下执行此操作?相当于:

Cue.objects.values('*').distinct('group_id')

我在这里链接过滤器所以我需要将它保留在ORM中。

1 个答案:

答案 0 :(得分:0)

这是我迄今为止最好的,但它非常不洁净:

cues = self._get_assignable_cues(keyword)
group_ids = tuple(cues.values_list('group_id', flat=True).distinct())
cues_per_group = Cue.objects.raw(
    'SELECT * FROM main_cue WHERE group_id IN %s GROUP BY group_id', (group_ids,)
)