我有一个带有日期时间字段的模型。我希望得到一个包含三列的表格,年份,月份和时间跨度项目数量。我也想订购从最新到最旧的。我想得到的是这样的:
2011 August 4
2011 March 7
您如何建议我应该这样做?
我最终做了这样的事情,我不确定这是不是最好的方式。
query_set = Post.objects.all()
years = query_set.dates("pub_date","year")
date_hierarchy = {}
for year in years:
date_hierarchy[year] = {}
months = query_set.filter(pub_date__year=year.year).dates("pub_date","month")
for month in months:
date_hierarchy[year][month] = query_set.filter(pub_date__year=month.year,pub_date__month=month.month).count()
然后,在模板中:
{% for year, month_dict in date_hierarchy.items %}
{% for month,post_count in month_dict.items %}
<li><a href="{% url arsiv_month month.year month.month %}">{{ month|date:"Y E" }} [{{ post_count }}]</a></li>
{% endfor %}
{% endfor %}
答案 0 :(得分:0)
看一下SQL的GROUP BY
子句。 django支持这一点。例如:Django annotate groupings by month(我链接的问题中的第二个响应似乎比接受的答案更便携。)