根据评论数量为电影分配排名 - Django

Assign a rank to a movie based on number of comments - Django

我有电影,每部电影都有评论。我想创建一个函数,使用密集排名根据大量评论对我的电影进行排名。这是我到目前为止得到的 - 问题是,每部电影总是排名 1。

commented_movies = Movie.objects.annotate(comment_count=Count('comments', distinct=True)).annotate(
            rank=Window(expression=DenseRank()
                        , order_by=F('comment_count').desc()
                        , partition_by=[F('id')]))

我猜问题可能出在partition_by,但我不知道如何解决。 id 是电影的主键。

好的,很快。我刚刚发现 partition_by 不是必需的 - 删除它并且有效:

commented_movies = Movie.objects.annotate(comment_count=Count('comments', distinct=True)).annotate(
            rank=Window(expression=DenseRank()
                        , order_by=F('comment_count').desc()
                        , partition_by=[F('id')]))