1

说我有这样的模型:

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

4 回答 4

3

您可以使用查询集的values方法执行此操作:

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

值(*字段)

返回一个 ValuesQuerySet - 一个 QuerySet 计算结果为字典列表而不是模型实例对象。

于 2009-12-30T18:56:43.703 回答
2

查看重组模板标签。如果您想在模板中进行分组显示,那么这应该是您需要的。否则,您可以阅读源代码以了解它们如何完成分组。

于 2009-12-30T19:12:18.497 回答
2

您可以在视图中使用 进行分组itertools.groupby()

于 2009-12-30T22:25:56.857 回答
1

你可以通过使用 order_by 来做到这一点:

Foo.objects.order_by( "type" );
drinks = Foo.objects.all( )

现在您有一系列按类型订购的饮料。您可以使用它或编写一个函数来创建您想要的结构,而无需使用线性扫描对其进行排序。

于 2009-12-30T18:59:28.210 回答