2017-02-22 113 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

相关问题