【发布时间】:2012-07-08 10:51:57
【问题描述】:
我想以某种方式查询数据库,而不仅仅是按某个字段排序,而是为该字段的每个唯一值获得一个单独的 QuerySet(或字典、列表等)。希望以下示例对您有所帮助:
假设一个模型像
Class Person(models.Model):
first_name = models.CharField()
last_name = models.CharField
调用 Person.objects.all().order_by('last_name') 会给我一个长查询集。相反,我希望为每个唯一的姓氏创建一个单独的列表。因此,每个姓氏="Smith" 的人都有一个列表,每个姓氏="Nguyen" 的人都有另一个列表,等等。
显然我无法提前知道数据库中的姓氏是什么,也不知道有多少人会共享一个共同的姓氏。在 django 中是否有任何快速、高效或自动的方法来执行此操作,还是我只需要在取回一个大型查询集后自己处理数据?
【问题讨论】:
-
order_bylast_name,然后使用itertools.groupby进行迭代也可能是一个选项