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
.