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).
精彩评论