2012-08-26 22 views
1
orders = Order.objects.filter(date__range=[datetime.datetime.now(), datetime.timedelta(days=1)]) 

我想这不是正是我想要的,但是当我将它输入到我的python shell中时,我不断收到此警告。如何过滤今天创建的对象(Django)

RuntimeWarning: DateTimeField received a naive datetime (2012-08-26 02:03:25.614372) while time zone support is active. 

回答

2

Django的datetime对象现在支持时区。 datetime.datetime.now()返回天真的对象(不带时区)。要比较它们,您需要制作datetime.datetime.now()时区感知。

您可以使用django.utils.timezone,它具有一个用于使datetime.datetime实例支持时区感知的API。

例如:

from django.utils import timezone 

timezone.make_aware(datetime_object, tzinfo_object) 

参考Django Time Zones

+0

[进口日期时间] [从django.utils.timezone进口UTC] [现在= datetime.datetime.utcnow()代替(tzinfo = UTC) 它告诉我,要做到这一点,却怎么也我让时区是PST? – anc1revv

+0

如果你安装了'pytz',你可以使用'import pytz tz = pytz.timezone('US/PST')' – Rohan

7

这可以帮助你:link。 我didn`t检查这个代码,但是:

import datetime 
yesterday = datetime.date.today() - datetime.timedelta(days=1) 
orders = Order.objects.filter(date__gt=yesterday) 

它将把所有的订单,该日期字段包含日期在昨天。既然你从未有订单,这可能会奏效。