我有一个django 1.3项目,我正在添加将按特定时间表运行的文本通知。因此,我将需要应用程序时区识别。看起来django 1.4处理得非常好。问题是我使用SQLite for db,它不存储时区信息,所以我必须转换。我是一个django新手。关于如何将SQLlite中的datetime字段转换为时区感知字段的任何建议。
顺便说一句,当我升级到django 1.4并激活时区支持后启动manage.py shell时,我收到以下消息:
RuntimeWarning: SQLite received a naive datetime (2012-04-05 15:18:49.939725) while
time zone support is active. RuntimeWarning)
谢谢!
答案 0 :(得分:4)
您不会将SQlite中的日期时间字段转换为时区感知字段。在SQlite中,日期时间仍然是天真的,但转换为UTC。并且在应用程序级别可以获得时区感知日期时间。
例如,当您从SQlite查询Model实例时,它有一个datetime字段,Django:
编辑:更正了我最初的错误答案,了解了您在模型实例上获得的内容。
如果当前SQlite数据库中的日期时间不是UTC,则需要进行一次性迁移,将它们全部转换为UTC。 (以及UTC我只是指天真的UTC值。作为SQlite - 以及MySQL - 没有存储时区信息的日期时间字段)
我建议您仔细而彻底地阅读与时区相关的文档:https://docs.djangoproject.com/en/1.4/topics/i18n/timezones/
这很容易弄错。
是的,对于你的代码“给”Django的天真日期时间进行保存的每个实例,你都会获得RunTimeWarning
。你必须逐步修复它们,让它们能够识别时区。