我有一个包含日期字段的Django模型:
class Event(models.Model):
event_date = models.DateField()
我想在此模型上有一位经理,仅显示在定义为7月1日(当前年度)至6月31日(以下年度)的时间段内发生的事件。
因此,对于今年,我想要从2011年7月1日到2012年6月31日返回活动。当当前日期到2012年7月1日时,我们将展示发生在2013年6月31日的活动。< / p>
我将如何做到这一点?
谢谢!
答案 0 :(得分:3)
直接来自文档:
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Event.objects.filter(event_date__range=(start_date, end_date)
https://docs.djangoproject.com/en/dev/ref/models/querysets/#range
所以唯一的挑战是弄清楚今年是什么,并调整开始和结束日期以反映这一点。一个经理方法:
class EventManager(models.Manager):
def get_query_set(self):
# Quick check to see what dates we should search within
return super(EventManager, self).get_query_set().filter(event_date__range=(start_date, end_date))
class Event(models.Model):
this_year = EventManager()
...
现在您可以查询:
Event.this_year.all()