2016-11-30 3 views
0

すべての私のモデルは他のモデルと自分自身とのいくつかの多対多の関係を持っている、と彼らはすべてのテーブル「を通じて」Djangoは

はのは、私がモデルとManyToManyFieldを持つモデルAを、持っているとしましょう持っているオブジェクトのすべての多対多の関係を取得しますBC、のは、フィールド名は、関連するモデル

と同じで、私はモデルAとのManyToManyFieldを持つモデルDを持って考えてみましょう。

さて、私はクラスBAオブジェクトに関連するすべてのオブジェクトを取得したい、CD

これは私がしようとしたものです:

a1 = A.objects.get(pk = 1) 
#Get all B objects related to A 
a1.b.all() 
#Get all C objects related to A 
a1.c.all() 
#Get all D objects related to A but from D class because that's where the field is 
#Raises error 'ManyToManyDescriptor' object has no attribute 'all' 
D.a.all(pk=1) 

実際のモデルはhere(マイ見つけることができます問題はPessoaとCCirです)。

答えて

2

あなたが関係を逆転得るために、またはあなたが提供したコードでa.d_set.all()を使用することができます。

obj = Pessoa.objects.get(pk=1) # get the object 
obj.ccir_set.all() 

また、あなたがあなたのM2Mモデル

ため related_nameを提供することを検討可能性があります