Django: Filtering datetime field by *only* the year value?
Posted
by unclaimedbaggage
on Stack Overflow
See other posts from Stack Overflow
or by unclaimedbaggage
Published on 2010-06-08T12:57:37Z
Indexed on
2010/06/08
13:02 UTC
Read the original article
Hit count: 269
Hi folks,
I'm trying to spit out a django page which lists all entries by the year they were created. So, for example:
2010:
Note 4
Note 5
Note 6
2009:
Note 1
Note 2
Note 3
It's proving more difficult than I would have expected. The model from which the data comes is below:
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
I've tried a few different ways, but seem to run into hurdles down every path. I'm guessing an effective 'group by' method would do the trick (PostGres DB Backend), but I can't seem to find any Django functionality that supports it. I tried getting individual years from the database but I struggled to find a way of filtering datetime fields by just the year value. Finally, I tried adding the note_year @property but because it's derived, I can't filter those values.
Any suggestions for an elegant way to do this? I figure it should be pretty straightforward, but I'm having a heckuva time with it. Any ideas much appreciated.
© Stack Overflow or respective owner