查询以获取评分最高的 x,评分最低的 x 人
Posted
技术标签:
【中文标题】查询以获取评分最高的 x,评分最低的 x 人【英文标题】:Query to fetch highest rated x with mimimum x people rated 【发布时间】:2020-04-30 23:50:57 【问题描述】:模型.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()
查询以获取评分最高且至少有 5 人评分的电影。
【问题讨论】:
您好,欢迎来到***,我邀请您阅读:***.com/help/how-to-ask, ***.com/questions/59728819/…的可能重复 如果你想讨论如何做,或者展示你在做什么以及你在哪里卡住以便其他人可以帮助,你可以添加一个小例子 【参考方案1】:您应该阅读有关django's annotation. 的基础知识 在你的情况下,这样的事情应该可以工作:
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'
)
【讨论】:
以上是关于查询以获取评分最高的 x,评分最低的 x 人的主要内容,如果未能解决你的问题,请参考以下文章