Получение последних записей для каждой группы
Я пытаюсь создать простой пример хранилища в 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.