如果我从D级开始访问,那么我希望得到所有B.name和C.name给出匹配的' a'在D里面怎么办呢?例如,如果D匹配A中的name属性,那么我希望得到所有匹配的B.name(bs)和找到的每个B.name的相应C.name。
class A(models.Model):
name = models.CharField(max_length=32)
bs = models.ManyToManyField('B')
class B(models.Model):
name = models.CharField(max_length=32)
cs = models.ForeignKey('C')
class C(models.Model):
name = models.CharField(max_length=15)
class D(models.Model):
a = models.ForeignKey('A')
答案 0 :(得分:1)
您可以通过
轻松获得结果d = D.objects.get(id=5)
bs = d.a.bs.all()
#Now you can iterate over each bs and get their name
for b in bs:
print(b.name, b.cs.name)
如果您有大量数据,那么这会产生多个查询,因此您应该使用select related和prefetch related来优化查询。