2016-08-04 7 views
-1

クラスDからすべてのB.nameとC.nameを取得したい場合は、Dの中に一致する 'a'を指定します。たとえば、DがAのname属性と一致する場合、見つかったすべてのB.nameに対応するB.name(bs)と対応するC.nameをすべて取得する必要があります。Django関連のテーブル間でのファイルへのアクセス

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

あなたは簡単にあなたが大量のデータを持っている場合は、クエリを最適化するためにselect relatedprefetch relatedを使用する必要がありますので、これは、複数のクエリを生成する

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) 

で結果を得ることができます。

関連する問題