2017-03-29 13 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

클래스와 인스턴스 문제입니다.

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

는보다 다른