django中项目的日期层次结构

时间:2011-09-06 13:25:45

标签: django

我有一个带有日期时间字段的模型。我希望得到一个包含三列的表格,年份,月份和时间跨度项目数量。我也想订购从最新到最旧的。我想得到的是这样的:

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 %}

1 个答案:

答案 0 :(得分:0)

看一下SQL的GROUP BY子句。 django支持这一点。例如:Django annotate groupings by month(我链接的问题中的第二个响应似乎比接受的答案更便携。)