2013-06-21 3 views
0

저는 장고 개발로 시작하고 일부 가치를 얻지 못했습니다. 내 마음 속에서 그것은 간단해야합니다.Django가 views.py 내에서 외래 키 데이터를 얻습니다.

여러 모델이 있지만 내보기에서 이벤트 자체에서 지역 (군)을 얻는 데 어려움이 있습니다. 아래에는 이벤트 코드의 아주 짧은 샘플이 있습니다 (더 이상 묻지 않으려면 관련이 없습니다).

class Event(models.Model): 
    organiser = models.ForeignKey(User) 
    etc... 

문제는 하나의 이벤트가 여러 영역 (이벤트 유형에 따라 제한됨)에 광고 될 수 있다는 것입니다. 그렇지 나는 아래와 같은 이벤트 카운티 정의 된 많은에 많은 확신하려면 :

class EventCounty(models.Model): 
    county = models.ForeignKey(county) 
    event = models.ForeignKey(event) 

이제 문제는보기에 거짓말을, 내 인덱스 페이지에 대해 나는 최근에 추가 된 5와 5 개 다가오는 이벤트를 표시 할 . 이벤트에서 date_added 및 event_date 필드로 주문할 수 있으므로이 작업은 매우 간단합니다. 그러나이 데이터에서 카운티에 액세스하는 방법을 잘 모르겠습니다.

나는 SQL 문을 직접 작성한다고 가정하고 있지만 (가능하면 간단하다.) 장고 프레임 워크에 머물러 있고 코드를 사용하고 싶다. 나는 아래 진술서를 번역해야 할 필요가 있다고 생각한다.

select county from EventCounty where event in (listevents); 

아무도 내가 이것을 작동시킬 수있는 방법을 안다면 나는 감사 할 것입니다! 사전에

감사합니다,

누가 당신이 이벤트가 여러 군에있을 수의 정의에

+0

왜 사용하지 (등 슬라이스, 필터, 순서를 제외)는 검색어 세트와 같이 작업 할 수 의미 RelatedManager입니다 데이터베이스를 더 크고 느리게 만드는'EventCounty' 모델을 만드는 대신'Event' 모델의'county' 필드를 사용 하시겠습니까? –

답변

0

. 그래서 이벤트 객체가 County으로 설정 한 당신이

event_obj.county_set.all() 

county_set()로 액세스 할 수있는 것은 RelatedManager 그래서 당신이 그것에 .filter(), .get() 등을 할 수 있습니다. 당신이 EVENTCOUNT 모델 이벤트 모델에 외래 키를 보유하고 오히려 간단하다으로 참조 된 개체

EventCounty.objects.select_related('event').filter(....) 

select_related on Django doc. sites

0
objs = EventCounty.objects.filter(event__in=listevents) 
countyList = [] 
for obj in objs: 
    countyList.append(obj.county) 
0

확인이 select_related - 외래 키가 수 있습니다 "뒤로"관계 (참조 Django documentation).

events = Event.objects.all().order_by(<put your date field here>)[:5] 

는 예를 들어, 모든 EventCounty 객체를 목록을 얻을 수 (또는 검색어 세트)하려면 다음과 같이 귀하의 경우에는이 볼 수 있었다 첫 번째 이벤트 객체는 사용 로한에 의해 제안

events_county = events[0].eventcounty_set.all() 

가 eventcounty_set 당신이