Python – Select Distinct Years and Months for Django Archive Page

datetimedjangodjango-querysetdjango-viewspython

I want to make an archive_index page for my django site. However, the date-based generic views really aren't any help. I want the dictionary returned by the view to have all the years and months for which at least one instance of the object type exists. So if my blog started in September 2007, but there were no posts in April 2008, I could get something like this

2009 - Jan, Feb, Mar
2008 - Jan, Feb, Mar, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
2007 - Sep, Oct, Nov, Dec

Best Answer

This will give you a list of unique posting dates:

Posts.objects.filter(draft=False).dates('post_date','month',order='DESC')

Of course you might not need the draft filter, and change 'post_date' to your field name, etc.

Related Topic