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.

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