根据评论数量为电影分配排名 - 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')]))
我有电影,每部电影都有评论。我想创建一个函数,使用密集排名根据大量评论对我的电影进行排名。这是我到目前为止得到的 - 问题是,每部电影总是排名 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')]))