Estoy tratando de enviar un correo simple usando IPython. No he configurado ningún modelo que todavía reciba 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ó una fecha y hora ingenua (2013-09-04 14: 14: 13.698105) mientras el soporte de zona horaria está activo. RuntimeWarning)
Probado: el primer paso es agregar USE_TZ = True
a su 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)
fuente
tzinfo=<UTC>
, qué es<UTC>
? Esa no es una construcción sintáctica que he visto.datetime.now
, cámbielotimezone.now
y agreguefrom django.utils import timezone
en la parte superior.import pytz
datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=pytz.UTC)
USE_TZ = True
,TIME_ZONE = 'UTC'
. Pero cuando lo usotimezone.now()
no se muestratzinfo=<UTC>
... Así que este objeto de fecha y hora se pasa como ingenuo. ¿Por que sucede?Use la función django.utils.timezone.make_aware para hacer que sus ingenuos datetime sean conscientes de la zona horaria y evitar esas advertencias.
Convierte el objeto de fecha y hora ingenuo (sin información de zona horaria) en el que tiene información de zona horaria (usando la zona horaria especificada en la configuración de django si no la especifica explícitamente como un segundo argumento):
fuente
auto_now
yauto_now_add
funcionará bien para los campos de fecha y hora. Si necesita tener un objeto de fecha y hora actual consciente de la zona horaria en los modelos por alguna razón, use ladjango.utils.timezone.now()
función.Solo para corregir el error y configurar la hora actual
fuente
Uno puede arreglar la advertencia y usar la zona horaria especificada en settings.py, que puede ser diferente de UTC.
Por ejemplo, en mi settings.py tengo:
Aquí hay una solución; La ventaja es que
str(mydate)
da el tiempo correcto:Se está utilizando otro método equivalente
make_aware
, consulte la publicación de dmrz.fuente
Rápido y sucio: apáguelo:
en tus
settings.py
fuente
También puede anular la configuración, particularmente útil en las pruebas:
Esto evitará que vea la advertencia, al mismo tiempo, cualquier cosa en su código que requiera una fecha y hora consciente de la zona horaria puede causarle problemas. Si este es el caso, vea la respuesta de kravietz.
fuente
Si está tratando de transformar una fecha y hora ingenua en una fecha y hora con zona horaria en django, aquí está mi solución:
t1 es una fecha y hora ingenua y t2 es una fecha y hora con zona horaria en la configuración de django.
fuente