Получение последних записей для каждой группы

Я пытаюсь создать простой пример хранилища в django 4.0, где материал вставляется в таблицу хранилища, определенную следующим образом:

class material_storage(models.Model):
      storage_id = models.AutoField(primary_key=True)
      material = models.ForeignKey(itemtype, on_delete=models.PROTECT)
      amount = models.IntegerField(null=True)
      price = models.FloatField(null=True)
      timestamp = models.DateTimeField(default=timezone.now)

Для получения последней записи для каждого материала в этой таблице мне нужно что-то похожее на это в SQL:

SELECT material_id, amount, price, MAX(timestamp)
FROM assetmanager_material_storage
GROUP BY material_id

Поскольку я новичок в Django, мне пока не удалось воссоздать этот запрос. Я нашел несколько тем, предлагающих такие решения, как:

material_storage.objects.values('material').annotate(latest_record=Max('timestamp'))

но в моем случае это не работает, вместо этого выдает ошибку "имя 'Max' не определено". Другой подход был бы следующим:

material_storage.objects.all().latest('timestamp')

но это вернет только самый последний объект во всей таблице, и я не смог пока понять, как применить "latest" к каждому материалу, а не ко всем записям. Так что теперь я в некотором роде застрял. Если кто-то может сказать мне, что я упускаю, я буду благодарен.

thx in advance.

Вернуться на верх