python - 启用时区支持的 Django 项目中南方迁移的 DateTimeField 默认值

标签 python django django-south django-timezone

我正在使用 South 0.7.6 为启用时区支持的 Django 1.4.3 项目创建模式迁移。

架构迁移包括在一个表上添加一个DateTimeField(使用auto_now=True)。

创建迁移时,South 提示我:

The field 'MyTable.my_field' does not have a default specified, yet is NOT NULL.
Since you are adding this field, you MUST specify a default
value to use for existing rows. Would you like to:
 1. Quit now, and add a default to the field in models.py
 2. Specify a one-off value to use for existing columns now

如果我不关心现有行的这个值(我只希望迁移在没有警告的情况下成功),那么在这里给出的正确一次性值是多少?

到目前为止,我使用了 datetime.datetime.utcnow()。但是,在应用迁移时我得到以下信息:

C:\Python27\lib\site-packages\django\db\models\fields\__init__.py:808:
RuntimeWarning: DateTimeField received a naive datetime (2013-01-16 00:00:00)
while time zone support is active.

South 似乎没有导入 pytz 或 Django 帮助程序类,那么我如何在此处提供时区感知默认值?

最佳答案

手动编辑 South 创建的迁移文件并添加:

from django.utils import timezone

然后在迁移文件中找到您要添加的字段并将其默认设置为timezone.now()

关于python - 启用时区支持的 Django 项目中南方迁移的 DateTimeField 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14362414/

相关文章:

python - 如何将 < 转换为 < in lxml,Python?

使用 AWS RDS 的 Django `TransactionTestCase` 测试用例非常慢

python - 在 Django Admin 中保留过滤器

django - 如何测试Django是否以 Debug模式运行?

django - 使用 Nose 运行单元测试时出现 South 错误

python - 在主循环旁边运行 Tkinter 相关代码,无需 GUI 卡住

python - 在 Centos 8 上安装 Python 3 返回 "Failed to synchronize cache for repo ' BaseOS'"

python - 为什么我不能通过 pip 将 Tensorflow 从 2.0 版更新到 2.1 版?

django - 有没有一种简单的方法可以将 Django 的模型和迁移链与数据库验证一致性进行比较?

sql - 获取数据库错误 : multiple default values specified for column