我使用 South 来迁移我的 Django 模型。然而,南方有一个令人讨厌的错误。它不会在 Postgres 数据库中设置默认值。例子:
created_at = models.DateTimeField(default = datetime.now)
tag_id = models.PositiveIntegerField(default = 0)
South 会将这两个字段添加到数据库中,但无法设置它们的默认值,需要手动完成。
这个bug有补丁吗?
UPDATE我已经尝试过设置默认日期auto_now_add=True
,但这也不是设置默认值。添加null=True
在字段中添加一个db.alter_column
在南方制作的迁移脚本中。但仅此而已removes NOT NULL
约束,不添加默认值。与整数字段相同
如果您使用以下方式自动生成迁移:
./manage.py schemamigration app_name --auto
然后,在实际应用迁移之前,您需要对迁移进行一些小的编辑。进入生成的迁移(应该称为类似app_name/migrations/000X__auto_add_field_foo.py
)并寻找参数:
keep_default=False
in the db.add_column
称呼。只需将其更改为:
keep_default=True
除了任何现有行之外,Django 现在会将您的默认值应用到实际模式。如果 South 有某种设置来生成此参数,那就太好了True
默认情况下,但没有这样的运气。您每次都需要进行此编辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)