Django:按日期范围过滤对象

时间:2014-07-14 17:57:06

标签: python django datetime django-models models

我的对象模型是:

class Event(models.Model):
    start = models.DateTimeField()
    end = models.DateTimeField()

我今天需要过滤所有对象。

我有一个对象,开始日期为2014/03/01 00:00,结束日期为2014/10/01 00:00。 我今天日期过滤对象时需要有这个对象:

Event.objects.filter(start__gte=today, end__lte=today)

如何按今天的日期过滤对象,并在开始时获取所有结果>今天<结束?

2 个答案:

答案 0 :(得分:4)

datetime.date.today()获取今天的日期并使用gtlt

import datetime

today = datetime.date.today()
Event.objects.filter(start__lt=today, end__gt=today)

这将过滤开始日期小于今天且结束日期大于今天的对象。

答案 1 :(得分:0)

您可以使用datetime模块的组合方法:

import datetime
today = datetime.datetime.today()
Event.objects.filter(start__gte=datetime.datetime.combine(today, datetime.time.min),
                     end__lte=datetime.datetime.combine(today, datetime.time.max))