我正在Windows Azure上部署我的Django项目。我使用SQLite作为数据库服务器,一切都很好。当我部署了My project时,我决定将它与SQL Azure数据库连接,但似乎这个解决方案产生了一些错误。我无法再编辑用户个人资料。我总是得到这个错误:
AttributeError at /admin/auth/user/1/ 'unicode' object has no attribute 'tzinfo'
答案 0 :(得分:2)
我在尝试使用Django(1.5.1)的django-pyodbc-azure
数据库后端时遇到了同样的问题:默认情况下,它将DateTimeField
字段存储在您的数据库中datetime2(7)
,它看起来仍然是在Django中不受支持。
在我的情况下,我在'use_legacy_datetime' : True
中添加了settings.py
选项,如下所示:
DATABASES = {
'default': {
'ENGINE' : 'sql_server.pyodbc',
'NAME' : '<MYDBNAME>',
'USER': '<MYDBUSER>',
'PASSWORD': '<MYDBPWD>',
'HOST': '<MYHOST>',
'OPTIONS': {
'use_mars': True,
'use_legacy_datetime' : True, # I added this line
},
},
}
我找到了解决方案here。
我不太了解Azure平台,因此我不知道这是否正是您的情况,如果不是,您仍然可以修改数据库,将datetime2(N)
字段替换为旧的datetime
字段。
希望它有所帮助。
答案 1 :(得分:2)
当您的数据库包含如下所示的日期时间戳时,会发生此错误:
0000-00-00 00:00:00.000000
(如果你使用MySQLWorkbench删除或覆盖以前的日期,这可能发生在MySQL中)
当您尝试在Django模型对象中检索这些记录时,您将从pytz时区库中获得异常:
AttributeError 'unicode' object has no attribute 'tzinfo'
您应首先在数据库中编辑这些日期,并将其设置为更近的日期,例如2018-01-01 00:00:00.000000
或设置为NULL
(但不是空白)。
请参阅:
另见: