2013-09-04 12 views
167

Próbuję wysłać prostą wiadomość za pomocą IPython. Nie ustawiłem żadnych modeli nadal otrzymujących ten błąd. Co można zrobić?RuntimeWarning: DateTimeField otrzymał naiwny datetime

Błąd: /home/sourabh/Django/learn/local/lib/python2.7/site-packages/django/db/models/fields/ startowych .py: 827: RuntimeWarning: DateTimeField otrzymał naiwna data-godzina (2013-09-04 14: 14: 13.698105), gdy aktywna jest strefa czasowa. RuntimeWarning)

Tried: Pierwszym krokiem jest dodanie USE_TZ = True do pliku ustawień i zainstalować pytz (jeśli to możliwe).

Błąd zmianie:

(learn)[email protected]:~/Django/learn/event$ python manage.py shell 
/home/sourabh/Django/learn/local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:53: RuntimeWarning: SQLite received a naive datetime (2013-09-05 00:59:32.181872) while time zone support is active. 
    RuntimeWarning) 

Odpowiedz

292

Problem nie jest w ustawieniach Django, ale w daty przeszedł do modelu. Oto jak obiekt stref czasowych świadomy wygląda następująco:

>>> from django.utils import timezone 
>>> import pytz 
>>> timezone.now() 
datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=pytz.UTC) 

I tu jest naiwny obiektu:

>>> from datetime import datetime 
>>> datetime.now() 
datetime.datetime(2013, 11, 20, 20, 9, 26, 423063) 

Więc jeśli jesteś przejazdem datę e-mail w dowolnym miejscu (i ostatecznie trafia do pewnego modelu), wystarczy użyć Django's now(). Jeśli nie, to prawdopodobnie problem z istniejącym pakietem, który pobiera datę bez strefy czasowej i możesz załatać pakiet, zignorować ostrzeżenie lub ustawić USE_TZ na False.

+14

dzięki, rozwiązałem mój 100-letni problem! – doniyor

+5

Gdzie piszesz 'tzinfo = ', co to jest ''? To nie jest konstrukt syntaktyczny, który widziałem. – jameshfisher

+3

Trochę za późno na imprezę, ale to, co widzisz, to ** wyjście ** z powłoki. Dokładniej, jest to wynik z metody __repr__ obiektu datetime, która zwraca informacje do wydrukowania obiektu. –

12

oto doc o problemie masz skierowaną Time Zone and fixtures

+1

mam przejrzałem im nie pomaga z moim problemem. :( – shifu

+1

na chwilę obecną mam ustawione USE_TZ = False. Thanx anyways :) – shifu

+2

Chociaż link może odpowiedzieć na pytanie, lepiej w tym miejscu umieścić istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/18592115) – Pablo

0

Wystarczy, aby naprawić błąd, aby ustawić aktualny czas

from django.utils import timezone 
import datetime 

datetime.datetime.now(tz=timezone.utc) # you can use this value 
Powiązane problemy