2014-01-17 6 views
1

У меня есть сценарий, который создает некоторые модели в моей базе данных, и я использовал datetime, а не timezone. Она не дает мне ошибку, но я получаю следующее предупреждение:Django timezone vs datetime

/Library/Python/2.7/site-packages/Django-1.6-py2.7.egg/django/db/models/fields/__init__.py:903: RuntimeWarning: DateTimeField Notification.date_sent received a naive datetime (2014-01-17 16:20:56.524827) while time zone support is active. 
    RuntimeWarning) 

Мой вопрос здесь: это сделать разницу? конечно, может быть, я должен использовать timezone, потому что пользователи могут быть в разных часовых поясах, но тогда почему это дает мне RuntimeWarning? Есть ли существенная разница в эффективности?

ответ

2

Речь идет не об эффективности, а о правильности. Как говорится в ошибке, ваше datetime наивно, что означает, что часовой пояс этого datetime неизвестен. Это означает, что другие части вашего приложения не могут отображать/преобразовать его должным образом, поскольку они не могут интерпретировать часовой пояс он находится в

Как the documentation говорит:.

Наивный объект не содержит достаточно информацию, чтобы однозначно найти себя относительно других объектов даты/времени. Является ли наивный объект представляет собой скоординированное универсальное время (UTC), местное время или время в каком-то другом часовом поясе, зависит только от программы, так же как и до программы, независимо от того, представляет ли конкретное число метры, мили или массу. Наивные объекты легко понять и работать, ценой игнорирования некоторых аспектов реальности.

+0

Хорошо, спасибо, вот что я думал. –

Смежные вопросы