2015-01-29 6 views
1

내 웹 사이트에서 DateTimeField가있는 이벤트 모델을 만든 사용자가 모든 조직 된 이벤트 (앞으로 및 과거)를 볼 수있는 타임 라인보기가 있습니다. 결과를 그룹화하여 템플릿에서 렌더링합니다. 원하는 출력은 다음 연도 별 그룹화에서연도 별 및 월별 이벤트 그룹화

- 2014 
-- January 
---- event1 
---- event2 
-- February 
---- event1 
---- event2 
.... 
- 2015 
-- January 
.... 

내 시도 :

 events = {} 

     last_year = None 
     current_year_events = [] 

     for event in ProofEvent.objects.all().order_by("date"): 
      year = event.date.year 

      if year != last_year: 
       current_year_events.append(event) 
       events[year] = current_year_events 
       last_year = year 
       current_year_events = [] 
       print event.title 
      else: 
       current_year_events.append(event) 
       print event.title 

     print events 
+1

가에서보세요을' – eumiro

+0

당신은 그룹에 달 하시겠습니까 itertools.groupby'? – laike9m

+0

이것은 템플릿에서 매우 쉽게 할 수 있습니다 : https://docs.djangoproject.com/ko/1.7/ref/templates/builtins/#regroup 귀하의 경우, {날짜 별 재편성 이벤트 수년수 %}' – Wolph

답변

3

만 템플릿이 필요가 다음 렌더링에 그룹 이벤트를 시도합니다. 당신은 이벤트의 단순 목록을 전달하고 {% ifchanged %} 템플릿 태그를 사용할 수 있습니다

{% for event in events %} 

    {% ifchanged %}<h2>{{ event.date|date:"Y" }}</h2>{% endifchanged %} 

    {% ifchanged %}<h3>{{ event.date|date:"F" }}</h3>{% endifchanged %} 

    <div>{{ event.title }}</div> 

{% endfor %} 
+0

결과물은 내가 필요한 것입니다. 그건 event.date | date를 제외하고. 나는 SO가 나를 허용하자마자이 대답을 받아 들일거야 –

+0

물론,'event.date' :-) – catavaran