Я пробовал аннотировать строки с помощью оконной функции RowNumber, но она срабатывает после фильтрации, соответственно, старая нумерация перетирается новой.

queryset.annotate(
    num=Window(RowNumber(), order_by=F('field').asc()),
).filter(name__startswith='A')

Попробовал разбить. Вывел только комбинации id и номера

ids_nums = queryset.annotate(
    num=Window(RowNumber(), order_by=F('field').asc()),
).values('id', 'num')

И отдельно отфильтрованные строки

queryset.filter(name__startswith='A')

Но теперь задача как-то объединить эти выборки, чтобы ко строкам второй по id в первой взять num. Как это можно сделать?