Запрос, чтобы получить самый высокий рейтинг х с минимальным количеством людей х - PullRequest
0 голосов
/ 14 января 2020

model.py

class Movie(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=100)
    vote_count = models.IntegerField()

class Watchlist(models.Model):
    userid = models.IntegerField()
    movie_id = models.ForeignKey(Movie, on_delete=models.CASCADE)
    rating = models.IntegerField()

запрос для получения наиболее рейтинговых файлов mov ie с минимальным рейтингом 5 человек.

1 Ответ

0 голосов
/ 14 января 2020

Вы должны прочитать основы об аннотации django. В вашем случае, что-то вроде этого должно работать:

from django.db.models import Count, Sum, F

qs = Movie.objects.annotate(vote_count=Count('watchlist_set'), 
                            vote_sum=Sum('watchlist_set__rating'), 
                            rating = F('vote_sum')/F('vote_count')

    ).filter(
        vote_count__gte=5,
    ).order_by(
        '-rating'
    )
...