0

我想获得超过 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 个邀请的日子。我该如何做到这一点?

4

1 回答 1

0

但是,这并没有给我有 0 个邀请的日子。

day在计算计数之前您已经分组

....values('day').annotate(count=Count('id'))

因此,这些天将仅是表中存在的天,因此不包括邀请数为 0 的天。

我不确定这是否可以通过查询完全实现,因为表中不存在您想要的日期。但是,您可以执行以下操作:

  • 获取一组 14 天范围内的所有天数(s1)
  • 在另一组(s2)中获取该 14 天范围内的表中存在的天数
  • 取 s1 和 s2 的集合差。
于 2016-12-13T16:28:30.150 回答