Задать вопрос
@Gambetto

Как в Django фильтровать результат оконной функции?

Аннотирую выборку номерами строк с помощью оконной функции. Хочу, чтобы после фильтрации номер строки остался прежним.
В таком варианте фильтрация происходит до применения оконной функции:
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.

Возможно ли всё же реализовать такую работу без сторонних библиотек?
  • Вопрос задан
  • 106 просмотров
Подписаться 2 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Django: создание backend-приложений
    7 недель
    Далее
  • Skillbox
    Python-фреймворк Django
    3 месяца
    Далее
  • ProductStar
    Python и Django: бэкенд-разработка
    2 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы