根据评论数为电影分配等级-Django

时间:2019-03-17 18:25:21

标签: django django-models window-functions dense-rank

我有电影,每部电影都添加了评论。我想创建一个函数,该函数将使用密集排名基于许多评论对我的电影进行排名。这就是我到目前为止得到的-问题是,每部电影的排名总是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是电影的主键。

1 个答案:

答案 0 :(得分:0)

好的,那很快。我刚刚发现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')]))