0

私は以下のモデルを持っています。

class Model1(models.Model):
   name = models.CharField()

class Model2(models.Model):
   name = models.CharField()
   model1 = models.ForeignKey(model1)

class Model3(models.Model):
   name = models.CharField()
   model2 = models.ForeignKey(model2)
   flag = models.BooleanField(blank=False)

Model2.name私のディスプレイは、Model1.nameリストページのようになるはずです。条件は次のとおりです。Model2少なくとも 1 つあるインスタンスのみを表示する必要がありますModel3.flag = True

そのため、現在、リスト内のすべてのオブジェクトを取得してModel2繰り返し処理していModel3ます。select_related()モデルにはうまく使えません。誰でも助けることができますか。

ありがとう。

4

1 に答える 1

1

何かのようなもの:

qs = Model2.objects.filter(model3__flag=True).select_related('model1').distinct()
for m2 in qs:
    print m2.model1.name, m2.name

# only fetch the names, 
# this works if you treat duplicated ('name', 'model1__name') tuples same and show them once.
qs = qs.values('model1__name', 'name')
for x in qs:
    print x['model1__name'], x['name']
于 2012-06-08T12:17:04.637 に答える