我现在看到它在{%ifm|date:'Y'==Y|date:'Y'%}行中,通过更好地准备视图中的数据,我设法用更少的循环来完成它。
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")
})
在模板中。。。
{% 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>
似乎有效,但可能可以改进。