我有一个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执行此操作吗? 我必须自己做吗?
答案 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'))