Sql 按Django列表分组
我有一个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() 我想把所有人按生日分组(按出生日期分组)。 我想弄一本字典,像这样
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可以很好地完成这项工作。看见