2012-06-25 5 views
1

비슷한 질문이 전에 제기되었지만 결론적 인 답변을 찾을 수 없었습니다.Django - 역방향 foreignkey select_related

주어진 다음의 모델 :

class Parent(models.Model): 
    name = models.CharField(max_length=250) 

class ChildA(models.Model): 
    parent = models.ForeignKey('Parent') 

class ChildB(models.Model): 
    parent = models.ForeignKey('Parent') 

어떻게 주어진 부모의 모든 자식을 얻을 수 있나요? 선택 관련 만 앞으로 진행되므로 내가 알 수있는 한 제대로 작동하지 않습니다. 프리 페치 관련 기능은 부모에게 실제 필드 참조가있을 때만 작동합니다 (예 : 부모가 아이가있는 m2m 인 필드가있는 경우). 그러면 어떻게 작동하는지 알 수 없습니다.

나는 이것이 문서에서 간과 한 것임을 확신한다.

답변

3

select_related 또는 prefetch_related과 아무 관련이 없습니다. 구조를 가진 부모의 모든 자식을 얻으려면 항상 다음 두 가지 쿼리를 수행해야합니다.

my_children = list(my_parent.childa_set.all()) + list(my_parent.childb_set.all()) 
+0

N 어린이의 경우 항상 N 개의 쿼리가 필요합니까? 승인. 사용중인 parent.childa_set 구문은 무엇입니까? – guywhoneedsahand

+0

https://docs.djangoproject.com/ko/1.4/topics/db/queries/#following-relationships-backward –

+0

아, 환상적입니다. 감사합니다. 기본적으로 Child.objects.filter (parent = myparent)의 약자입니다. – guywhoneedsahand

관련 문제