You can simply use a filter on a date range using the __gt (more) and __lt (less) operators:
Event.objects.filter(event_date__gt=datetime.date(2011, 1, 1), event_date__lt=(datetime.date(2011,6,1))
Or you can write a semester in db, you can, for example, override the save () method by default, so this is done automatically every time a new or existing event is saved. Thus, the model will look as follows:
class Event(models.Model):
event_date = models.DateField()
semester = models.CharField(max_length=10)
def save(self, *args, **kwargs):
if self.event_date.month in [1,2,3,4,5]
self.semester = 'spring'
elif self.event_date.month in [8,9,10,11,12]
self.semester = 'fall'
super(Event, self).save(*args, **kwargs)
Then you can execute a simple request to Event.objects.filter (semester = 'spring')
source
share