Архив сообщений на основе года / месяца
Я новичок в Django и запустил приложение, я сделал модели, представления, шаблоны, но я хочу добавить какой-то архив в нижней части страницы, что-то вроде этогоhttp://www.flickr.com/photos/ionutgabriel/3990015411/.
Поэтому я хочу перечислить все годы, а рядом с ними все месяцы этого года. Месяцев, у которых есть посты, чтобы быть ссылками, а других нет. Также я хочу перевести названия месяцев, потому что они мне нужны на румынском языке.
Что я сделал до сих пор:
с моей точки зрения:
def archive(request):
arch = Post.objects.dates('date', 'month', order='DESC')
archives = {}
for i in arch:
tp = i.timetuple()
year = tp[0]
month = tp[1]
if year not in archives:
archives[year] = []
archives[year].append(month)
else:
if month not in archives[year]:
archives[year].append(month)
return render_to_response('blog/arhiva.html', {'archives':archives})
и в моем шаблоне:
{% for years, months in archives.items %}
{{ years }}
{% for month in months %}
<a href="{{ years }}/{{ month }}">{{ month }}</a>
{% endfor %}
<br />
{% endfor %}
это возвращает что-то вроде:
2008 10
2009 10 9
2007 10
но я не могу отсортировать их вообще ... по годам или по чему-либо, а также я не знаю, как добавить все месяцы (имена), я хочу, чтобы они были такими:
2009 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2008 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2007 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
со ссылкой на месяцы, у которых есть записи.
Спасибо за помощь!
постскриптум Извините за мой английский
Л.Э .: Может быть, я поставил вопрос неправильно, я знаю, как получить даты, но я не знаю, как их отформатировать, чтобы они выглядели так:
2009 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2008 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2007 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
все, что я могу получить отarch = Post.objects.dates('date', 'month', order='DESC')
с участием
{{ archives }}
в шаблоне это что-то вроде:
[datetime.datetime(2009, 10, 1, 0, 0), datetime.datetime(2009, 9, 1, 0, 0),
datetime.datetime(2008, 10, 1, 0, 0), datetime.datetime(2007, 10, 1, 0, 0)]
тогда я попробовал цикл:
{% for archive in archives %}
{{ archive }} <br />
{% endfor %}
и получил:
2009-10-01 00:00:00
2009-09-01 00:00:00
2008-10-01 00:00:00
2007-10-01 00:00:00
После этого попробовал что-то вроде этого:
{% for archive in archives %}
{{ archive|date:"Y: m" }} <br />
{% endfor %}
и получил:
2009: 10
2009: 09
2008: 10
2007: 10
Здесь я застрял и не знаю, как отформатировать данные, чтобы я мог получать разные годы со всеми месяцами и только месяцами, у которых есть записи, которые будут ссылками ...
Есть идеи?
Заранее спасибо!