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