Django,分组查询项
假设我有这样的模型:
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()
来进行分组。