Django ORM для получения последней записи для определенного ID
Как мне написать django ORM для получения последних записей из таблицы для определенного идентификатора.
Пример:
У меня есть таблица(tr_data) с данными следующего вида:
id | trs(foreign key) | status | last_updated |
---|---|---|---|
1 | 301 | 3 | 2022-11-28 06:14:28 |
2 | 301 | 4 | 2022-11-28 06:15:28 |
3 | 302 | 3 | 2022-11-28 06:14:28 |
4 | 302 | 4 | 2022-11-28 06:15:28 |
5 | 302 | 2 | 2022-11-28 06:16:28 |
Я хочу иметь значения набора запросов, которые дают мне идентификатор trs с его последним статусом. Я пытался использовать aggragate и MAX, но не получил желаемого результата.
Ожидание результата как :
[{"trs":301, "status":4},"trs":302,"status":2}]
Возможный дубликат Django ORM: Group by и Max
Вы можете достичь этого с помощью annotate и Max. В модели tr_data добавьте параметр related_name к trs что-то вроде 'tr_status'.
Написать орм:
latest_objs = TrData.objects.annotate(temp=Max('trs__tr_status__last_updated')).filter(last_updated).values('trs', 'status')