2009-03-24 25 views
9

Ich möchte eine archive_index Seite für meine Django Seite erstellen. Die datumsbasierten generischen Ansichten sind jedoch keine Hilfe. Ich möchte, dass das von der Ansicht zurückgegebene Wörterbuch alle Jahre und Monate enthält, für die mindestens eine Instanz des Objekttyps existiert. Also, wenn mein Blog im September 2007 begonnen, aber es gab keine Beiträge im April 2008 habe ich so etwas wie dieseWählen Sie Eindeutige Jahre und Monate für Django Archiv Seite

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

Antwort

33

Dies wird Ihnen eine Liste der einzigartigen Buchungsdaten:

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

Natürlich können Sie möglicherweise nicht den Entwurf Filter, und ändern Sie 'post_date' zu Ihrem Feldnamen usw.

+3

Für jeden, der ein 'DateTimeField' hat, ist es einfach' .datetimes (...) '. – Pureferret

1

Sie sollten die Informationen erhalten können, alles, was Sie von dem integrierten Ansichten beschreiben konnte. Können Sie genauer sagen, was Sie nicht bekommen können? Dies sollte alles, was Sie brauchen:

django.views.generic.date_based.archive_month 

Reference page (auf dieser Seite für die obige Zeichenfolge suchen)

+0

Nein, das gibt die tatsächlichen Objekte für den Monat. Ich möchte die Objekte nicht. Ich will nur die verschiedenen Monate und Jahre selbst. – Apreche

10

Ich fand die Antwort auf meine eigene Frage.

It's on this page in der Dokumentation.

Es gibt eine Funktion namens Daten, die Ihnen unterschiedliche Daten geben. So kann ich

Entry.Objects.Dates ('pub_date', 'Monat'), um eine Liste von Datetime-Objekten, eine für jedes Jahr/Monat zu erhalten.

+0

Das ist lustig Sie können Ihre eigene Frage beantworten. Ich würde Ihre Ergebnisse jedoch auch zu Ihrem ursprünglichen Beitrag hinzufügen. –

Verwandte Themen