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至少有一个的实例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 回答