我有以下型号。
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()
作为模型。
任何人都可以提供帮助。
感谢。
答案 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']