2017-02-22 4 views
0

Ich habe diese Frage gesehen ein paar Mal gefragt, und ich habe folgte die Antworten vorgeschlagen, aber im noch den Fehler bekommen:Django Datetime-Feld erhielt eine naive Datetime

/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) 

Von dem, was ive lesen django utils Zeitzone mit anstelle von datetime.now() sollte das Problem gelöst werden, aber es hat nicht. Ich habe auch die folgenden Einstellungen in meinem settings.py

LANGUAGE_CODE = 'en-gb' 

TIME_ZONE = 'Europe/London' 

USE_I18N = True 

USE_L10N = True 

USE_TZ = True 

Code

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") 

Antwort

2

Wahrscheinlich, weil die Zeitzone Informationen verloren, wenn days_away zu schaffen. Sie können einfach hinzufügen timezone.now() zu einem timedelta:

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

Um Zeitdaten bis Mitternacht Sie können standardmäßig replace verwenden:

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

auch beachten, dass, was Sie haben eine Warnung, kein Fehler.

+0

das funktioniert, aber days_away muss um Mitternacht starten und nicht jetzt, wie bekomme ich das funktioniert? – AlexW

+0

@AlexW Antwort aktualisiert! –

+0

perfekt, danke für Ihre Hilfe! – AlexW

Verwandte Themen