在Django中的分组

2024-04-28 14:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在django的主干版本中创建简单的按查询分组?

我需要一些像

SELECT name
FROM mytable
GROUP BY name

实际上,我想做的是简单地获取具有不同名称的所有条目。


Tags: djangonamefrom版本名称bymytablegroup
3条回答

添加到queryset的.distinct:

Entries.objects.filter(something='xxx').distinct()

如果需要所有不同的名称,请执行以下操作:

Foo.objects.values('name').distinct()

您将得到一个字典列表,每个字典都有一个名称键。如果需要其他数据,只需将更多属性名作为参数添加到.values()调用中。当然,如果您添加的属性在具有相同名称的行之间可能有所不同,那么您将打断.distinct()。

如果你想拿回完整的模型对象,这不会有帮助。但是,无论如何,获得不同的名称和完整的数据本质上是不兼容的目标;您如何知道哪个行与您希望返回的给定名称是完整的?如果您想为具有给定名称的所有行计算某种聚合数据,aggregation support最近被添加到Django trunk中,可以为您处理这些数据。

这不起作用,因为每一行都有唯一的id。所以每条记录都是不同的。。

为了解决我的问题

foo = Foo.objects.all()
foo.query.group_by = ['name']

但这不是官方的API。

相关问题 更多 >