2017-03-29 6 views
0

モデルの後方の外部キーマネージャーを動的に取得しようとしています。Django後方の外部キーマネージャー

私が持っている場合:これは私の

django.db.models.fields.related_descriptors.create_forward_many_to_many_manager.<locals>.ManyRelatedManager 
を与える

a = modelB.modela_set 

をシェルに:

class modelA(models.Model) 
    name = models.CharField(max_length=100) 

class modelB(models.Model) 
    fk = models.ManyToManyField(modelA) 

From the docsは私が行うことで、後方の外部キーマネージャを取得することができていることがわかります

私ができること

a.all() 

結果を取得します。私は文字列 'MODELA' を持っていると私がすれば

しかし:

a = getattr(modelB, 'modela_set') 

私は

django.db.models.fields.related_descriptors.ManyToManyDescriptor 

を取得し、私が行った場合:

a.all() 

私は属性を取得エラー。

なぜgetattr()がこのように動作しているのか分かりません。

これを行う方法はありますか?

答えて

1

これはクラス対インスタンスの問題でした。

getattr(modelB, 'modela_set') 

はより異なります

a = ModelB.objects.get(pk=1) 
getattr(a, 'modela_set')