1

そのため、映画モデルと多対多の関係を持つ人物モデルがあります。

モデルは次の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

私は、少なくとも 250 票を獲得した少なくとも 20 本の映画で最高の平均評価を獲得した上位 20 人のクエリを取得しようとしています。

これまでのところ、私はこれを持っています:

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 未満の人を返します。

4

0 に答える 0