Django: Filter-datetime-Feld von *nur* der Wert des Jahres?

Ich versuche, spuckte ein django-Seite, die listet alle Einträge auf, die von dem Jahr, in dem Sie erstellt wurden. So zum Beispiel:

2010:

  • Anmerkung 4
  • Hinweis 5
  • Hinweis 6

2009:

  • Hinweis 1
  • Note 2
  • Anmerkung 3

Es erweist sich als schwieriger als ich erwartet hätte. Das Modell, von dem die Daten stammen unter:

class Note(models.Model):
    business = models.ForeignKey(Business)
    note = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    class Meta:
        db_table = 'client_note'

    @property
    def note_year(self):
        return self.created.strftime('%Y')

    def __unicode__(self):
        return '%s' % self.note

Habe ich versucht, ein paar verschiedene Möglichkeiten, aber scheine Hürden jeden Pfad. Ich vermute, eine effektive 'group by' - Methode würde den trick tun (PostGres DB-Backend), aber ich kann nicht scheinen zu finden, Django-Funktionalität, die es unterstützt. Ich versuchte, die einzelnen Jahre aus der Datenbank, aber ich kämpfte um einen Weg finden, zu filtern datetime-Felder nur durch den Wert des Jahres. Schließlich habe ich versucht, indem die note_year @Eigenschaft ist, sondern weil es abgeleitet ist, kann ich nicht filtern diese Werte.

Anregungen für einen eleganten Weg, dies zu tun? Ich finde es sollte ziemlich einfach sein, aber ich habe eine heckuva Zeit mit ihm. Irgendwelche Ideen, sehr geschätzt.

InformationsquelleAutor PlankTon | 2010-06-08

Schreibe einen Kommentar