【发布时间】:2011-01-25 12:33:50
【问题描述】:
我有一个看起来有点像这样的报表模型:
class Report(models.Model):
date = models.DateField()
quantity = models.IntegerField()
product_name = models.TextField()
我知道我可以通过这种方式获得一个产品去年的最后一个条目:
Report.objects.filter(date__year=2009, product_name="corn").order_by("-date")[0]
我知道我可以通过这种方式按名称对条目进行分组:
Report.objects.values("product_name")
但是我怎样才能得到每个产品最后一个条目的数量呢?我觉得我会在 SQL 中这样做(不确定,我的 SQL 生锈了):
SELECT product_name, quantity FROM report WHERE YEAR(date) == 2009 GROUP_BY product_name HAVING date == Max(date)
我的猜测是使用带注释的 Max() 对象,但我不知道该怎么做。
目前,我通过手动添加每个查询的最后一项来为每个我无法单独列出的产品名称添加。
【问题讨论】:
标签: django model filter aggregate