更好的处理django查询的方法

时间:2012-06-08 11:29:14

标签: python django

我有以下型号。

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.nameModel1.name。 条件是:我应该只显示至少有一个Model2

Model3.flag = True个实例

现在我正在获取列表中的所有Model2个对象并迭代Model3。 我无法正确使用select_related()作为模型。 任何人都可以提供帮助。

感谢。

1 个答案:

答案 0 :(得分: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']