2017-02-22 161 views
0

我已經看到了這個問題問了幾次,我都跟着答案建議,但IM仍然得到錯誤:Django的日期時間字段中接收一個天真的日期時間

/usr/lib64/python2.7/site-packages/django/db/models/fields/__init__.py:1430: RuntimeWarning: DateTimeField CircuitMaintenance.end_time received a naive datetime (2017-02-24 23:59:59) while time zone support is active. 
    RuntimeWarning) 

。據我閱讀使用Django utils的時區而不是datetime.now()應該解決問題,但它沒有。我也以我的settings.py

LANGUAGE_CODE = 'en-gb' 

TIME_ZONE = 'Europe/London' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 

代碼

from django.utils import timezone 
dt_now = timezone.now() 
days_away = datetime(dt_now.year, dt_now.month, dt_now.day) + timedelta(days) 
days_away_end = days_away + timedelta(hours=23,minutes=59,seconds=59) 
maintenance = CircuitMaintenance.objects.filter(start_time__gte=days_away, end_time__lte=days_away_end,circuit__site_data__site_type="Major Site") 

回答

2

可能得到下面的設置,因爲創建days_away時,時區信息丟失。您可以簡單地添加timezone.now()timedelta

days_away = timezone.now() + timedelta(days) 

爲默認時間數據到午夜,您可以使用replace

days_away = timezone.now().replace(hour=0,minute=0, second=0) + timedelta(days) 

另外請注意,你所擁有的是一個警告,而不是錯誤。

+0

工作,但days_away時間需要在午夜開始,而不是現在,我如何得到這個工作? – AlexW

+0

@AlexW答案更新! –

+0

完美,謝謝你的幫助! – AlexW

相關問題