2016-11-18 3 views
0

나는 두 가지 모델이있어?prefetch_related() Django의 ForeignKey 역방향 조회?</p> <pre><code>class Company(models.Model): ... class Supplier(models.Model): company = models.ForeignKey(Company, null=True, related_name="suppliers") </code></pre> <p>어떻게 자신의 관련 공급 업체와의 모든 회사를 얻을 수 :

나는 시도했다 : 내가 잘못 무엇

Company.objects.prefetch_related('suppliers') 
Company.objects.prefetch_related('supplier_set') 
Company.objects.prefetch_related('suppliers').all() 
... 

?

company.suppliers.all()을 할 때 Company.objects.all() 위에 명중 다른 SQL 발생하지 않도록 당신이

답변

2

prefetch_related just adds the SQL query 공급 업체를 얻기 위해 감사. 그 후에 정상적으로 공급자에게 액세스 할 수 있습니다.

companies = Company.objects.all().prefetch_related('suppliers') 

for company in companies: 
    # Does not require a new SQL query 
    suppliers = company.suppliers.all() 
+0

추가 SQL 쿼리를 포함하는 방법은 없습니까? 나는 공급 업체가있는 회사를 가져 와서 템플릿에서 사용해야합니다. 'select_related ('suppliers')'라고 시도했지만, 나는 다음과 같이 나타납니다 :'django.core.exceptions.FieldError : select_related : 'suppliers'에 주어진 잘못된 필드 이름. 선택 사항은 다음과 같습니다. (없음) ' – user2734

+0

허, 그건 별개의 문제입니다. '회사 '에'select_related'를 사용하고 있습니까? 'Supplier'모델에 'related_name ='suppliers '가 있습니까? –