2

我有一个用户查询集,在使用 Django Window 函数注释每个用户的排名后,我想在不修改排名值的情况下查询用户

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

这很好用,但是在users_points_query查询过滤时,会再次计算排名,因此第一个用户将获得 1 的排名,这是基于第一行的,依此类推。

4

0 回答 0