Django IPython sqlite жалуется на наивное datetime
У меня есть новый проект в Django 1.4, используя sqlite db. Также с помощью django_extenstions 'shell_plus без проблем.
Когда я установил IPython, оба shell
и shell_plus
начали жаловаться:
/path/to/my/virtualenv/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py:50:
RuntimeWarning: SQLite received a naive datetime (2012-07-29 13:15:45.229464) while time zone support is active.
Кажется, что IPython сам использует неизвестные даты. Как это можно зафиксировать?
EDIT:
Я не хочу отключать поддержку часовых поясов Django.
Ответы
Ответ 1
Я помещаю это в свой local_settings.py:
#ignore the following error when using ipython:
#/django/db/backends/sqlite3/base.py:50: RuntimeWarning:
#SQLite received a naive datetime (2012-11-02 11:20:15.156506) while time zone support is active.
import warnings
import exceptions
warnings.filterwarnings("ignore", category=exceptions.RuntimeWarning, module='django.db.backends.sqlite3.base', lineno=53)
Ответ 2
У меня такая же проблема, но я не думаю, что это действительно проблема. IPython, кажется, использует наивные datetime внутри, и Django просто предупреждает об этом. Django всегда отправляет это предупреждение, когда вы включаете поддержку часового пояса и всякий раз, когда обнаруживает наивное datetime. На моей машине это предупреждение появляется только при запуске или закрытии IPython. Это предупреждение не влияет на вашу работу с IPython. Таким образом, вы можете безопасно создавать известные даты обычно внутри IPython, а также сохранять их в своей базе данных. Чтобы избавиться от этого предупреждения, вам, вероятно, придется работать с внутренними IPython.
При работе с известными датами в целом я настоятельно рекомендую использовать pytz для этой цели.
Ответ 3
изменить settings.py, установить USE_TZ в False, чтобы решить эту проблему.