Аннотирую выборку номерами строк с помощью оконной функции. Хочу, чтобы после фильтрации номер строки остался прежним.
В таком варианте фильтрация происходит
до применения оконной функции:
from django.db.models import F, Window
from django.db.models.functions import RowNumber
queryset.annotate(
num=Window(RowNumber(), order_by=F('field').asc()),
).filter(name__startswith='A')
Есть
тикет на этот счёт, на который также ссылаются в комментариях к
давнему вопросу.
Думал разбить действия:
ids_nums = queryset.annotate(
num=Window(RowNumber(), order_by=F('field').asc()),
).values('id', 'num')
queryset.filter(name__startswith='A').annotate(num=???)
Но тут непонятно как связать отфильтрованные строки по id с ids_nums и аннотировать значениями num.
Возможно ли всё же реализовать такую работу без сторонних библиотек?