2015-01-22 4 views
0

는 다음과 같은 정의를 고려해django에서 이중 역방향 조회?

class A(models.Model): 
    ... 

class B(models.Model): 
    a_obs = models.ForeignKey(A, related_name='b') 

class C(models.Model): 
    b_obs = models.ForeignKey(B, related_name='c') 

하는의 우리가 유형 A의 인스턴스 ob1가 있다고 가정 해 보자. C.objects 또는 B.objects 관리자를 사용하지 않고 ob1과 관련된 모든 C 인스턴스를 얻으려면 어떻게 이중 역방향 조회를 수행 할 수 있습니까?

일반적으로 ob1.b.all()을 쓰면 QuerySetB인데 그 다음은 무엇입니까?

+0

왜'C.objects' 또는'B.objects'를 사용할 수 없습니까? – mipadi

+0

원형 수입 때문에 @mipadi. –

+0

원형 가져 오기를 수정하거나 처리하지 않는 이유는 무엇입니까? – mipadi

답변

0

"이중 역방향 조회"를 수행하는 것은 많은 자원을 필요로합니다. 데이터가 다른 방식으로 구성 될 수 없다고 확신합니까?

질문에 대한 답변을 얻으려면 요구 사항에 맞는 솔루션 here이 필요합니다. 시도해보십시오 :

# You start with object A as objA 
objsB = objA.b.all() 
requested_c_objects = [C.objects.filter(b_obs=b) for b in objsB] 

오류가 포함되어 있으므로 테스트 해 보았지만 아이디어를 얻길 바랍니다.

P.S. : *.objects 없이는 할 수 없습니다. 고유 한 Manager 메소드를 추가하거나 SQL 구문으로 직접 해보십시오.