鉴于此模型:
Foo(models.Model):
some_fields
...
date = models.DateTimeField(db_index=True, auto_now_add=True)
我想在图表中显示数据,其中X轴是时间(HH:MM),Y轴是那时的实例数。
我试过这个:
Foo.objects.extra({'date_created' : "date(date)"}).annotate(created_count=Count('id')).values('date_created', 'created_count')
但 created_count 的值始终为1,即使我同时创建2个实例(bulk_create)。
想知道在Django 1.8中实现这个目标吗?
更新:由于DateTimeField字段存储了毫秒数,因此查询不会计算同一天和时间的记录,就好像它们是在同时,所以我最终确定了零毫秒。
答案 0 :(得分:0)
您已使用annotate
将values
置于错误的顺序,并取错了列数。你链接的方式
Foo.objects.extra(
{'date_created' : "date(date)"}
).annotate(created_count=Count('id')).values('date_created', 'created_count')`
注释按表中所有列分组的计数,因此计数为1。
<强>解决方案强>:
Foo.objects.extra(
{'date_created' : "date(date)"}
).values('date_created').annotate(created_count=Count('date'))
首先选择date
作为date_created
,然后按日期分组count
。
答案 1 :(得分:0)
您需要在注释之前订购它。 stackoverflow上只有一个的答案提到了这一点,所以你走了。
setTimeout(function(){ alert("Hello"); }, 30000);