Вы можете просто использовать фильтр для диапазона дат, используя операторы __gt (больше чем) и __lt (меньше чем):
Event.objects.filter(event_date__gt=datetime.date(2011, 1, 1), event_date__lt=(datetime.date(2011,6,1))
Или вы можете записать семестр в БД, например, вы можетепереопределите метод save () по умолчанию, чтобы он выполнялся автоматически при каждом сохранении нового или существующего события.Таким образом, модель будет выглядеть следующим образом:
class Event(models.Model):
event_date = models.DateField()
semester = models.CharField(max_length=10)
def save(self, *args, **kwargs):
# determine if the even is in the spring or fall
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) # Call the "real" save() method.
Тогда вы можете просто запросить Event.objects.filter (semester = 'spring')