У меня модель отчета выглядит примерно так:
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 () с аннотацией, но я не знаю, как это сделать.
На данный момент я делаю это вручную, добавляя последний элемент каждого запроса для каждого списка product_name, которое я не могу перечислить.