Запрос на самый высокий х в Django - PullRequest
0 голосов
/ 14 января 2020

У меня есть 2 модели

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

def __str__(self):
    return self.title


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

    def __int__(self):
        return self.userid

, что будет запросом для получения наиболее просматриваемого mov ie

1 Ответ

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

из django .db.models import Count

# the most watched Movie instance
the_most_watched_movie = Movie.objects.annotate(count=Count('watchlist')).order_by('-count').first()

Также это можно сделать через Watchlist, если вам по какой-то причине он понадобится

watchlist = Watchlist.objects.annotate(count=Count('userid')).values('movie_id', 'count').order_by('-count').first()

movie_id = watchlist['movie_id']  # the most watched movie id
# the most watched Movie instance
the_most_watched_movie = Movie.objects.get(id=movie_id)
...