如何查询group byDjango ORM 中的日期时间字段?
楷模:
class test1(models.Model):
id = models.AutoField(primary_key=True, unique=True, verbose_name='id')
name = models.CharField(verbose_name='name', max_length=200)
cdate = models.DateField(verbose_name='date', default=timezone.now)
Run Code Online (Sandbox Code Playgroud)
查询集数据
for i in test1.objects.all():
print i.id, i.name, i.cdate
2 a 2017-08-11
3 b 2017-08-11
4 c 2017-08-11
5 a 2017-08-11
6 a 2017-08-11
Run Code Online (Sandbox Code Playgroud)
需要按月分组并使用 Django orm 计算 ID。
查询集
data = test1.objects.annotate(month=TruncMonth('cdate')).values('month').annotate(c=Count('id'))
for i in data:
print i
Run Code Online (Sandbox Code Playgroud)
结果
{'c': 1, 'month': datetime.date(2017, 8, 1)}
{'c': 1, 'month': datetime.date(2017, 8, 1)}
{'c': 1, 'month': datetime.date(2017, 8, 1)} …Run Code Online (Sandbox Code Playgroud)