说我有这样的模特:
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}]
]
您可以看到,将项目分组为词典列表。组查询列表列表也可以欢迎字典:)
此致
答案 0 :(得分:3)
您可以使用查询集的values
方法执行此操作:
http://docs.djangoproject.com/en/1.1/ref/models/querysets/#values-fields
值(*字段)
返回ValuesQuerySet - QuerySet 评估为列表 字典而不是模型实例 对象。
答案 1 :(得分:2)
查看regroup模板代码。如果要在模板中进行分组显示,那么这应该是您所需要的。否则,您可以阅读源代码以了解它们如何完成分组。
答案 2 :(得分:2)
您可以使用itertools.groupby()
。
答案 3 :(得分:1)
您可以使用order_by执行此操作:
Foo.objects.order_by( "type" );
drinks = Foo.objects.all( )
现在您按类型订购了一系列饮品。您可以使用它或编写函数来创建所需的结构,而无需使用线性扫描对其进行排序。