Arquivo de publicações com base no ano / mês do Django
Eu sou novo no Django e iniciei uma aplicação, eu fiz os models, views, templates, mas eu quero adicionar algum tipo de arquivo na parte inferior da página, algo como istohttp://www.flickr.com/photos/ionutgabriel/3990015411/.
Então eu quero listar todos os anos e ao lado deles todos os meses daquele ano. Os meses que têm posts para serem links e outros não. Também quero traduzir os nomes dos meses porque eu preciso deles em romeno.
O que eu fiz até agora é:
na minha opinião:
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})
e no meu modelo:
{% for years, months in archives.items %}
{{ years }}
{% for month in months %}
<a href="{{ years }}/{{ month }}">{{ month }}</a>
{% endfor %}
<br />
{% endfor %}
isso retorna algo como:
2008 10
2009 10 9
2007 10
mas eu não consigo separá-los ... por ano ou por qualquer coisa, e também eu não sei como adicionar todos os meses (os nomes), eu quero eles assim:
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
com link nos meses que tem entradas.
Obrigado pela ajuda!
p.s. Desculpe pelo meu Inglês
LE: Talvez eu coloquei a questão de uma maneira errada, eu sei como obter datas, mas eu não sei como formatá-los para ficar assim:
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
tudo que eu posso conseguirarch = Post.objects.dates('date', 'month', order='DESC')
com
{{ archives }}
no template é algo como:
[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)]
então eu tentei um loop:
{% for archive in archives %}
{{ archive }} <br />
{% endfor %}
e pegou:
2009-10-01 00:00:00
2009-09-01 00:00:00
2008-10-01 00:00:00
2007-10-01 00:00:00
Depois disso, tentei algo assim:
{% for archive in archives %}
{{ archive|date:"Y: m" }} <br />
{% endfor %}
e pegou:
2009: 10
2009: 09
2008: 10
2007: 10
Aqui eu estou preso e não sei como formatar os dados para que eu possa ter anos distintos com todos os meses e apenas os meses que tem entradas para serem links ...
Alguma ideia?
Agradeço antecipadamente!