Django,获取最后一天的总和?

Django, get sum of amount for the last day?

class Point(models.Model):
   user = models.ForeignKey(User)
   expire_date = models.DateField()
   amount = models.IntegerField()

我想知道给定用户

最后expire_date的总金额

一个用户可能有多个 points 并且具有相同的 expire_date

我可以做两个查询来获得 first last expire_dateaggregate。但想知道有没有更好的办法

我们可以在这里使用子查询:

from django.db.models import Sum

Point.objects.filter(
    expire_date__gte=Point.objects.order_by('-expire_date').values('expire_date')[:1]
).aggregate(total=Sum('amount'))

这将导致如下查询:

SELECT SUM(point.amount) AS total
FROM point
WHERE point.expire_date >= (
    SELECT U0.expire_date
    FROM point U0
    ORDER BY U0.expire_date DESC
    LIMIT 1
)

我还没有对它进行 运行 性能测试,所以我建议您先尝试测量这是否会显着提高性能。