Python Django按字段值分组
令人惊讶的是,我找不到一种方法来通过查询进行分组 我有一个查询集Python Django按字段值分组,python,django,Python,Django,令人惊讶的是,我找不到一种方法来通过查询进行分组 我有一个查询集qs,我试图按some_prop.val进行分组,考虑到qs排除了some_prop为None的条目 假设值是[1,2,3],那么我会在这样的结果之后: {1: entries1, 2: entries2, 3: entries3} Django ORM是否提供了这样的功能来对结果进行分组?据我所知,Django ORM没有特定的方法,但您可以执行以下操作来获得按字段值分组的条目字典: 与flat=True一起使用可获取数据库中现
qs
,我试图按some_prop.val
进行分组,考虑到qs
排除了some_prop
为None
的条目
假设值是[1,2,3]
,那么我会在这样的结果之后:
{1: entries1, 2: entries2, 3: entries3}
Django ORM是否提供了这样的功能来对结果进行分组?据我所知,Django ORM没有特定的方法,但您可以执行以下操作来获得按字段值分组的条目字典:
flat=True
一起使用可获取数据库中现有值的列表(如果您事先不知道这些值)。还可以使用.distinct()
删除重复值,因为我们不关心这些值:
value_list = MyModel.objects.values_list(
'interesting_field', flat=True
).distinct()
value\u列表
并填写字典:
group_by_value = {}
for value in value_list:
group_by_value[value] = MyModel.objects.filter(interesting_field=value)
groupby\u value
dictionary将interest\u字段中的不同值作为键,并将queryset对象作为值,每个对象都包含MyModel
的条目,其中interest\u字段=值列表中的值
出于评论遗留原因将此内容留在此处。
我做了一个in,它模拟了一个计数。。。分组依据
SQL查询
基本上,您需要利用用于分组的和用于依赖模型的
以下是上述示例:
我们可以执行计数。。。使用annotate()
、values()
、order\u BY()
和
django.db.models
的Count
方法:
让我们的模型是:
class Books(models.Model):
title = models.CharField()
author = models.CharField()
假设我们要计算每个不同作者在图书表中的图书对象数量:
result = Books.objects.values('author')
.order_by('author')
.annotate(count=Count('author'))
现在,结果包含一个包含两列的查询集:author和count:
author | count
------------|-------
OneAuthor | 5
OtherAuthor | 2
... | ...
如果你能发布更多关于你尝试的查询的信息,那么回答对我们来说是有益的。是的,但我不想按计数分组,我说得很清楚,我想按值分组,我怎么能更清楚呢?我甚至包括了预期的输出。