Django,分组查询项

1 投票
4 回答
702 浏览
提问于 2025-04-15 17:29

假设我有这样的模型:

class Foo(models.Model):
 name = models.CharField("name",max_length=25)
 type = models.IntegerField("type number")

在进行了一些查询,比如 Foo.objects.filter() 之后,我想把查询结果分组,像这样:

[  [{"name":"jb","type:"whiskey"},{"name":"jack daniels","type:"whiskey"}],
[{"name":"absolute","type:"vodka"},{name:"smirnoff ":"vodka"}],
[{name:"tuborg","type":beer}]
]

所以你可以看到,我想把项目分组为字典的列表。如果能把分组的查询结果做成列表而不是字典也很好哦 :)

祝好

4 个回答

2

看看这个regroup模板标签。如果你想在模板中进行分组显示,这个功能正是你需要的。否则,你可以查看源代码,看看他们是怎么实现分组的。

3

你可以通过查询集的 values 方法来实现这个功能:

http://docs.djangoproject.com/en/1.1/ref/models/querysets/#values-fields

values(*fields)

这个方法会返回一个 ValuesQuerySet——这是一种查询集,它的结果是一个字典列表,而不是模型实例对象。

2

你可以在你的视图中使用 itertools.groupby() 来进行分组。

撰写回答