Sql 按Django列表分组

Sql 按Django列表分组,sql,django,group-by,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() 我想把所有人按生日分组(按出生日期分组)。 我想弄一本字典,像这样

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

我在Postgres上测试了这个,extract可能在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'))

我在Postgres上进行了测试,extract可能也适用于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'))

嗨,我跑了那个然后。。。django.db.utils.DatabaseError:near“from”:语法错误Hi Daniel,您使用的是哪个数据库引擎?我使用的是sqlite3,但如果需要,我可以将其更改为另一个,我应该使用什么?难题…:)我个人更喜欢PostgreSQL,但MySQL可以很好地完成这项工作。看,嗨,我跑了那个,然后。。。django.db.utils.DatabaseError:near“from”:语法错误Hi Daniel,您使用的是哪个数据库引擎?我使用的是sqlite3,但如果需要,我可以将其更改为另一个,我应该使用什么?难题…:)我个人更喜欢PostgreSQL,但MySQL可以很好地完成这项工作。看见