按日期计算记录数

时间:2017-09-01 10:11:05

标签: django django-models django-queryset

鉴于此模型:

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字段存储了毫秒数,因此查询不会计算同一天时间的记录,就好像它们是在同时,所以我最终确定了零毫秒。

2 个答案:

答案 0 :(得分:0)

您已使用annotatevalues置于错误的顺序,并取错了列数。你链接的方式

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);