2012-08-26 28 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) 

它將把所有的訂單,該日期字段包含日期在昨天。既然你從未有訂單,這可能會奏效。