Django Jahr / Monat basierte Beiträge Archiv
Ich bin neu in Django und habe eine Anwendung gestartet. Ich habe die Modelle, Ansichten und Vorlagen erstellt, aber ich möchte dem Ende der Seite eine Art Archiv hinzufügenhttp://www.flickr.com/photos/ionutgabriel/3990015411/.
Deshalb möchte ich alle Jahre und alle Monate dieses Jahres auflisten. Die Monate, die Posts haben, um Links und andere Nr. Zu sein. Außerdem möchte ich die Monatsnamen übersetzen, weil ich sie auf Rumänisch brauche.
Was ich bisher gemacht habe ist:
aus meiner Sicht:
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})
und in meiner Vorlage:
{% for years, months in archives.items %}
{{ years }}
{% for month in months %}
<a href="{{ years }}/{{ month }}">{{ month }}</a>
{% endfor %}
<br />
{% endfor %}
das ergibt so etwas wie:
2008 10
2009 10 9
2007 10
aber ich kann sie überhaupt nicht sortieren ... nach Jahr oder nach irgendetwas, und ich weiß auch nicht, wie ich alle Monate (die Namen) hinzufügen soll, ich möchte sie so:
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
mit Link zu den Monaten, die Einträge haben.
Danke für deine Hilfe!
p.s. Entschuldigung für mein Englisch
LE: Vielleicht habe ich die Frage falsch gestellt, ich weiß, wie man Daten erhält, aber ich weiß nicht, wie man sie so formatiert, dass sie so aussehen:
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
Alles, was ich bekommen kannarch = Post.objects.dates('date', 'month', order='DESC')
mit
{{ archives }}
in template ist so etwas wie:
[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)]
dann habe ich eine Schleife ausprobiert:
{% for archive in archives %}
{{ archive }} <br />
{% endfor %}
und bekam:
2009-10-01 00:00:00
2009-09-01 00:00:00
2008-10-01 00:00:00
2007-10-01 00:00:00
Danach probiert man so etwas:
{% for archive in archives %}
{{ archive|date:"Y: m" }} <br />
{% endfor %}
und bekam:
2009: 10
2009: 09
2008: 10
2007: 10
Hier stecke ich fest und weiß nicht, wie ich die Daten formatieren soll, damit ich eindeutige Jahre mit allen Monaten und nur den Monaten erhalten kann, die Einträge haben, um Links zu sein ...
Irgendwelche Ideen?
Danke im Voraus!