1

我有一个 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 来做到这一点吗?我必须自己做吗?

4

1 回答 1

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'))
于 2013-10-03T14:43:52.453 回答