Django:按天计算,0天没有记录

时间:2016-12-13 16:03:24

标签: python django django-models django-aggregation

我希望获得超过14天的记录数

我现在正在做:

class Invitation(models.Model):
    ...
    start_date = models.DateTimeField(default=timezone.now)

all_invitations = Invitation.objects.all()

days14 = all_invitations.filter(start_date__range=[today - timedelta(days=7), today + timedelta(days=8)]).annotate(day=TruncDay('start_date')).values('day').annotate(count=Count('id')).values('day', 'count').order_by('day')

然而,这并没有给我提供0个邀请的日子。 我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

  

然而,这并没有给我提供0个邀请的日子。

在计算点数

之前,您已经在day上进行了分组
....values('day').annotate(count=Count('id'))

所以这些日子只会出现在表格中,因此它不会包含0个邀请函的日期。

我不确定这是否可以通过查询完全实现,因为表中没有您想要的日期。但是你可以这样做:

  • 获取一套(s1)中14天范围内的所有日子
  • 在另一组(s2)
  • 中获取该14天范围内的表格中的日期
  • 取s1和s2的设定差异。