开发者

Date hiearchy of items in django

I have a model with datetime field. I want to get a table with three columns as, year, month and number of items in time span. And I also want to order them from newest to oldest. What I want to get is something like this:

2011 August 4
2011 March 7 

How do you suggest I should do that?

Edit

I ended up doing something like this, I am not sure if it is best way to go though.

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()

Then, in template:

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


take a look at the SQL's GROUP BY clause. django supports this. for example: Django annotate groupings by month (the second response in the question that I linked seems more portable than the accepted answer).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜