3

我在模型中有一个字段,例如:

class Sample(models.Model): 
    start = models.TimeField(verbose_name=_("start time")) 
    end = models.TimeField(verbose_name=_("end time"))

现在,需要按“开始”和“结束”属性过滤我的对象,例如,它应该按今天、时间和 30 分钟内的时间过滤所有对象。

我试过了:

 models.Sample.objects.filter(start__gt=datetime.now(),
                             end__lt=datetime.now() + timedelta(minutes=30))

我知道,使用两个过滤器进行过滤是一个错误。我的代码到今天还没有过滤。例如,我今天需要在(星期二)从 12 点到 12:30 拥有所有对象

提前感谢您的帮助。

4

1 回答 1

3

您在模型声明中使用了TimeField。它只存储时间,没有日、月或年的数据。

时间,在 Python 中由 datetime.time 实例表示

所以不要使用datetime.now()使用datetime.now().time(),而不是datetime.now() + timedelta(minutes=30)使用(datetime.now() + timedelta(minutes=30)).time()

为了能够包括按日、月、年和时间进行过滤,请将模型中的 TimeField 替换为DateTimeField。过滤使用datetime.now()timedelta(minutes=30)将像您原来的问题一样工作。

于 2012-10-11T12:05:06.180 回答