访问Django相关表中的文件

时间:2016-08-04 21:48:04

标签: django django-models

如果我从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')

1 个答案:

答案 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 relatedprefetch related来优化查询。