Django查询:如何在今天,时间和30分​​钟后过滤对象?

时间:2012-10-11 11:00:21

标签: python mysql database django

我在模型中有一个字段:

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分之间拥有所有对象

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

  

一个时间,由Python表示的datetime.time实例

因此,不要使用datetime.now()使用datetime.now().time()代替datetime.now() + timedelta(minutes=30)使用(datetime.now() + timedelta(minutes=30)).time()

为了能够按天,月,年和时间进行过滤,请使用DateTimeField替换模型中的TimeField。使用datetime.now()timedelta(minutes=30)进行过滤将与原始问题一样。