2012-08-26 3 views
1
orders = Order.objects.filter(date__range=[datetime.datetime.now(), datetime.timedelta(days=1)]) 
나는 이것이 정확히 내가 원하는하지 않습니다 추측

,하지만 난 내 파이썬 쉘에이를 입력 할 때 내가이 경고가 계속 필터링하는 방법.오늘 생성 된 객체 (장고)

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

답변

2

이제 장고의 datetime 개체는 시간대를 지원합니다. datetime.datetime.now()은 순진한 객체를 반환합니다 (시간대 없음). 그들을 비교하려면 datetime.datetime.now()을 시간대를 인식 할 필요가 있습니다.

datetime.datetime 인스턴스를 시간대를 인식하도록 만드는 API가있는 django.utils.timezone을 사용할 수 있습니다. 예를 들어

:

from django.utils import timezone 

timezone.make_aware(datetime_object, tzinfo_object) 

참조

+0

[수입 날짜] 가 [django.utils.timezone 수입 UTC에서] [지금 = datetime.datetime.utcnow(). (= UTC tzinfo) 교체] 는 이렇게 말해,하지만 어떻게 할 수 나는 시간대를 태평양 표준시로 만들까요? – anc1revv

+0

'pytz'가 설치되어 있다면,'import pytz tz = pytz.timezone ('US/PST')' – Rohan

7

Django Time Zones이 당신을 도울 수 있습니다 link. 이 코드를 확인 돌아가신`t :하지만,

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

그것은 날짜 필드 어제를 통해 날짜를 포함하는 모든 주문을 가져올 것이다. 미래의 주문이 없으므로 작동 할 수 있습니다.

관련 문제