所以我有一个与电影模型有多对多关系的人物模型。
该Film
模型如下所示:
class Film(models.Model):
name = models.TextField(db_index=True, unique = True)
date = models.DateField()
votes = models.IntegerField(db_index=True)
rating = models.DecimalField(max_digits=3 , decimal_places=1)
actors = models.ManyToManyField('Person')
def __unicode__(self):
return self.name
Person
模型:
class Person(models.Model):
objects = PersonManager()
full = models.CharField(db_index=True,max_length=100,unique = True)
short = models.CharField(db_index=True,max_length=100)
def natural_key(self):
return (self.full,)
def __unicode__(self):
return self.full
我正在尝试查询平均评分最高的前 20 人,其中至少有 20 部电影获得了至少 250 票。
到目前为止,我有这个:
Person.objects.annotate(film_count=Count('film')).filter(film_count__gte=20).filter(film__votes__gte=250).annotate(avg_rating=Avg('film__rating')).order_by('-avg_rating')[:20]
但结果那返回者不到20部电影。