Group_by Django列表

时间:2013-10-03 14:17:37

标签: sql django group-by

我有一个django模型:

class Person(models.Model):
    """" Modelo criado com referencia ao modelo remoto """

    name = models.CharField(max_length=300)
    age = models.PositiveIntegerField()
    born = models.DateField()

我希望按生日分组所有人(按出生日期分组)。 我正在尝试获取字典词典,如下所示:

{ 
    02-17:[
            {
               name:'Daniel',
               age:22
            },
            {
               name:'Pedro',
               age:23
            },
          ],
    05-24:[
            {
               name:'Juan',
               age:44
            }
          ]
}

一个选项是:

query = Person.objects.all().query
query.group_by = ['born']

for item in QuerySet(query=query, model=Person):
    print item

但它会返回一个列表,其中包含按日期排序的所有对象...没有分组。

我可以通过django ORM或sql raw执行此操作吗? 我必须自己做吗?

1 个答案:

答案 0 :(得分:1)

我在Postgres上测试了这个,提取可能也适用于MySQL,但我不确定它是否适用于任何其他数据库。

from django.db.models import Count

Person.objects.extra(select={'day': 'extract( day from born )', 'month': 'extract ( month from born )'}).values('day', 'month').annotate(num=Count('born'))