您可以简单地在日期范围内使用过滤器,使用 __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')