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, чтобы решить эту проблему.