django - emailmessage - RuntimeWarning: DateTimeField recibió un datetime ingenuo
django sendgrid (4)
Estoy tratando de enviar un correo simple usando IPython. No he configurado ningún modelo que sigue recibiendo este error. ¿Qué se puede hacer?
Error: /home/sourabh/Django/learn/local/lib/python2.7/site-packages/django/db/models/fields/ init .py: 827: RuntimeWarning: DateTimeField recibió un datetime naive (2013-09-04 14: 14: 13.698105) mientras el soporte de zona horaria está activo. RuntimeWarning)
Intentado: el primer paso es agregar USE_TZ = True
a tu archivo de configuración e instalar pytz
(si es posible).
Error cambiado:
(learn)sourabh@sL:~/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)
Aquí está el doc sobre el problema al que te enfrentas, zona horaria y accesorios.
El problema no está en la configuración de Django, sino en la fecha pasada al modelo. Así es como se ve un objeto consciente de la zona horaria:
>>> from django.utils import timezone
>>> import pytz
>>> timezone.now()
datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=pytz.UTC)
Y aquí hay un objeto ingenuo:
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2013, 11, 20, 20, 9, 26, 423063)
Entonces, si está pasando la fecha de correo electrónico en cualquier lugar (y eventualmente llega a algún modelo), solo use Django''s now()
. Si no, es probable que sea un problema con un paquete existente que recupera la fecha sin la zona horaria y puede parchear el paquete, ignorar la advertencia o establecer USE_TZ en False.
Sólo para corregir el error para establecer la hora actual
from django.utils import timezone
import datetime
datetime.datetime.now(tz=timezone.utc) # you can use this value
Use la función django.utils.timezone.make_aware para que sus objetos de fecha y hora ingenuos django.utils.timezone.make_aware al tanto de la zona horaria y evite esas advertencias.