Как отфильтровать аннотированный набор запросов по оконной функции — без изменения значения аннотированного поля

#django #window-functions #ranking #django-database-functions

Вопрос:

У меня есть набор запросов пользователей, после аннотирования ранга каждого пользователя с помощью функции окна Django я хочу запросить пользователя без изменения значения ранга

 users_points_query = users.order_by(  '-total_points'  ).annotate(  rank=Window(  expression=Rank(),  order_by=[  F('total_points').desc()  ],  )  )  

это работает нормально, но при фильтрации по users_points_query запросу ранг вычисляется снова, поэтому первый пользователь получит ранг 1, который основан на первой строке и так далее.