2011-10-11 5 views
0

서로 연관된 몇 가지 데이터 모델 (테이블)이 있습니다. 모델에 다른 모델을 가리키는 관련 필드가 있으면 문제가 없습니다. 템플릿에서 쉽게 액세스 할 수 있지만 역방향 관계 만있는 호출은 어떻게 작성합니까?Django를 사용하여 기본 다중 테이블 관계 및 액세스에 대해 혼동했습니다.

예 :

CompanyLocation의 수를 가질 수 있으며, 각각의 위치 Contact의 수를 가질 수있다.

따라서 Company 테이블에는 위치 또는 연락처가 나와 있지 않지만 Location에는 회사와의 FK가 있습니다. Contact에는 위치가 있습니다.

템플릿에 특정 기준과 일치하는 회사를 표시하고 싶습니다. 그들과 함께, 그들의 위치와 그들의 위치 연락처도 전시하고 싶습니다.

내 생각, 어쩌면 나는 Company 쿼리가 먼저 다음 Location (및 Contact)에 대한 또 다른을 할 수 있도록하고, 일부는 방법 같은 DICT로 주입하지만 나에게 굉장히 혼란 소리와이 있는지 메신저, 공통입니다 무늬.

팁이 있습니까? 당신은 하나 개의 모델에 ForeignKey 필드를 만들 때

+0

"relation"은 ORM 주제가있는 모호한 용어입니다. "관계"는 테이블 또는 쿼리 결과에 대한 전문 용어입니다. 참조는 django 문서에서 "relation * ships *"으로 참조되므로 한 테이블 (모델)의 행 (인스턴스)이 다른 테이블의 행과 어떤 관련이 있는지 이야기 할 때 "관계"가 아닌 해당 용어를 사용하도록 노력해야합니다. 테이블. – SingleNegationElimination

+0

정식으로 언급 됨. 알려 줘서 고마워. 정확한 용어를 아는 것은 내 투쟁의 대부분을 의미합니다.) – Flowpoke

답변

2

은, 대상 모델은 자동으로 <referring_model>_set라는 속성 도착 - 그래서 당신의 예에서, 각 Company 인스턴스가 location_set 속성이, 그리고 각 Locationcontact_set 속성이 있습니다. 이러한 속성은 실제로 Manager 인스턴스 (Company.objects과 유사)를 참조하며 현재 인스턴스와 관련된 객체 만 반환합니다.

당신은 당신은 이전 버전과의 관계 in the Django docs 이런 종류의에 대한 자세한 내용을보실 수 있습니다 :, 템플릿에서 관련 개체를 통해

<ul> 
{% for location in company.location_set %} 
    <li> 
     <em>{{ location.name }}</em> 
     <ul> 
     {% for contact in location.contact_set %} 
      <li>{{ contact.name }}</li> 
     {% endfor %} 
     </ul> 
    </li> 
{% endfor %} 
</ul> 

을 예컨대을 반복 이러한 하위 참조를 사용할 수 있습니다.

+0

나에게 이것을 설명해 주셔서 대단히 감사합니다. 찾으려는 용어를 깨닫고 나면 같은 질문을하는 많은 질문이 있습니다. 다시 게시하는 것을 유감스럽게 생각하지만 대답 해 주셔서 감사합니다;) – Flowpoke

+1

글쎄, 위에서 언급 한 것처럼 이미 용어를 알고 있다면 아마 질문 할 필요가 없을 것입니다. :) 그래서 SO와 같은 인적 자원이 Google보다 유리합니다. – nrabinowitz

관련 문제