Django:按日期范围过滤对象

3 投票
2 回答
6282 浏览
提问于 2025-04-18 13:17

我的对象模型是:

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

我需要筛选出今天的所有对象。

我有一个对象,它的开始日期是2014年3月1日00:00,结束日期是2014年10月1日00:00。

在根据今天的日期筛选对象时,我希望能得到这个对象,比如:

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

我该如何根据今天的日期来筛选对象,并获取所有开始日期在今天之后、结束日期在今天之前的结果呢?

2 个回答

1

你可以使用datetime模块里的combine方法:

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))
6

使用 datetime.date.today() 来获取今天的日期,然后用 gtlt 来进行比较:

import datetime

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

这样可以筛选出那些开始日期在今天之前,并且结束日期在今天之后的对象。

撰写回答