Присвоить звание фильму по количеству комментариев - Джанго - PullRequest
0 голосов
/ 17 марта 2019

У меня есть фильмы, к каждому фильму добавлены комментарии.Я хочу создать функцию, которая будет оценивать мои фильмы на основе количества комментариев с использованием плотного ранжирования.Это то, что я получил до сих пор - проблема в том, что каждый фильм всегда имеет ранг 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 голосов
/ 17 марта 2019

Хорошо, это было быстро.Я только что понял, что 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')]))
...