Я новичок в 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
со ссылкой на месяцы, у которых есть записи.
Спасибо за вашу помощь!
p.s. извините за мой английский
LE: Может быть, я неправильно сформулировал вопрос, я знаю, как получить даты, но я не знаю, как их отформатировать, чтобы они выглядели так:
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
Здесь я застрял и не знаю, как отформатировать данные, чтобы я мог получать разные годы со всеми месяцами и только месяцами, у которых есть записи, которые будут ссылками ...
Есть идеи?
Заранее спасибо!