2016-03-27 27 views
1

...Django Şablon şimdi benim görünümünde aşağıdaki kod var

tarihleri ​​aşağıdaki listesini oluşturur
dates = Article.objects.dates('date', 'month').order_by('-date') 

...

[ 
    datetime.date(2016, 3, 1), datetime.date(2016, 1, 1), 
    datetime.date(2016, 1, 1), datetime.date(2015, 2, 1), 
    datetime.date(2015, 2, 1), datetime.date(2015, 1, 1), 
    datetime.date(2015, 1, 1) 
] 

ben Yıl Of İçiçe Listesini görüntüler Ve tarihler için bir yapar 'changeif' veya 'Yeniden toplamak' kullanarak ile mücadele ediyorum ... aşağıdaki biçimlendirmesi kullanarak iç içe geçmiş bir liste oluşturmak için

 <ul class="news-selector"> 
      <li><a href="todo">Year</a> 
       <ul> 
        <li><a href="todo">Month</a></li> 
       </ul> 
      </li> 
     </ul> 

gerek django şablon sistemini kullanarak nasıl yönetileceğini biliyor musunuz?

cevap

0

Bu, şimdi onun içinde görmek

<ul class="news-selector"> 
    {% for y in dates %} 
    {% ifchanged y.year %} 
     <li><a href="todo">{{y|date:'Y'}}</a> 
     <ul> 
      {% for m in dates %} 
      {% if m|date:'Y' == y|date:'Y' %} 
       <li><a href="todo">{{ m|date:'M' }}</a></li> 
      {% endif %} 
      {% endfor %} 
     </ul> 
     </li> 
    {% endifchanged %} 
    {% endfor %} 
</ul> 
0

liste verecek {% m eğer | tarih: 'Y' == y | tarih: 'Y' %} hattı, ben başarmış görünümünde verileri biraz daha iyi hazırlayarak daha az döngülerle yapmak.

date_list = Article.objects.dates('date', 'month', order='DESC') 

dates = [] 
for date in date_list: 
    dates.append({ 
     'year': str(date.year).rjust(4, '0'), 
     'month': str(date.month).rjust(2, '0'), 
     'month_name': date.strftime("%B") 
    }) 

Ve şablonda

...

  {% regroup dates by year as year_dates %} 

      <ul class="news-selector"> 
      {% for year in year_dates %} 
       <li><a href="todo">{{year.grouper}}</a> 
        <ul> 
        {% for month in year.list %} 
         <li><a href="{% url 'news_filter' month.year month.month %}">{{month.month_name}}</a></li> 
        {% endfor %} 
        </ul> 
       </li> 
       {% endfor %} 
      </ul> 

iş gibi gözüküyor, ama muhtemelen üzerine geliştirilebilir.