我在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本身使用不知不觉的日期时间。如何解决这个问题?
编辑:
我不想禁用Django的时区支持。
答案 0 :(得分:14)
我把它放在我的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)
答案 1 :(得分:12)
我有同样的问题,但我认为这不是一个问题。 IPython似乎在内部使用天真的日期时间,而Django只是警告它。当你打开时区支持并且每当它检测到天真的日期时间时,Django总是发送此警告。在我的机器上,此警告仅在我启动或关闭IPython时出现。此警告不会以任何方式影响您使用IPython的工作。因此,您可以安全地在IPython中创建通知日期时间,并将它们保存到您的数据库中。为了摆脱这个警告,你可能不得不在IPython的内部工作。
在处理一般的感知日期时间时,我强烈建议您使用pytz来实现此目的。
答案 2 :(得分:-3)
修改settings.py,将USE_TZ设置为False将解决此问题。