Django ORM: выбирать до тех пор, пока значение в столбце не изменится
Я хочу получать самые новые event до первого изменения.
Вот мои данные (отсортированные по timestamp):
# EventModel
id | event | timestamp
---+-----------+-----------
1 | birthday | 5
2 | birthday | 4
3 | wedding | 3
4 | null | 2
5 | birthday | 1
Вот мой желаемый результат:
<QuerySet [{'id': 1, 'event': 'birthday', 'timestamp': 5}, {'id': 2, 'event': 'birthday', 'timestamp': 4}]>
Обратите внимание, что есть также event=birthday, где id=5, но я не хочу, чтобы это было в выводе.
Новейшие event могут быть null и это нормально.
Я пробовал с Subquery:
from django.db.models import Subquery
subquery = EventModel.objects.order_by("-timestamp").values("event")[:1]
EventModel.objects.filter(event=Subquery(subquery))
Но это дает мне также строку с id=5.