Django ORM按日期获得最后一项记录

时间:2014-06-17 10:48:44

标签: django

我有一个名为PointsHistory的模型。

class PointsHistory(...):
      created_at = models.DateTimeField(auto_now_add=True)
      points = modes.IntegerField()
      user = models.ForeignKey(User)

我需要得到记录存在的最后一天积分。假设我们确实有昨天的数据。

today = datetime.today()
yestrerday = today + timedelta(days=-1)
lastpoint = PointsHistory.objects.filter(user = request.user, created_at__startswith = yestrerday.date()).aggregate(Sum('points'))

但是如果我们没有yersterday的记录,这将失败,我仍然需要最后记录日期总和。我怎么能这样做?

Order By无效,因为它是一个datetime字段。 (如果我按(日期)排序并得到0索引元素我得到我想要的东西。)

如果需要在最后一个入场日获得所有硬币的总和,假设在6月13日插入了一条记录,所以我需要当天所有硬币的总和。

我需要在没有硬编码6月13日的情况下使其成为通用的

1 个答案:

答案 0 :(得分:0)

我现在无权访问我的沙箱,但这应该可行(我不知道你的字段,但它应该没问题):

lastpoint = PointsHistory.objects.filter(user=request.user, created_at__lte=yesterday.date()).aggregate(Sum('points'))

最新也应该有效: https://docs.djangoproject.com/en/1.6/ref/models/querysets/#latest