South忽略Python / Django中字段默认值的更改

时间:2011-05-16 23:50:30

标签: python django django-south

为什么South无法识别Python模型中默认字段值的更改?例如,使用以南迁移的现有模型:

class MyFamily(models.Model):
    family_size = models.IntegerField(verbose_name="What is your family size?", default=2)

现在,我想将默认值从2更改为4。但是,在模块化模块时,South会报告:

python manage.py schemamigration family --auto change_default_from_two_to_four_for_size

Running migrations for family:
- Nothing to migrate.
    - Loading initial data for family.

我可以手动更新初始迁移,并使用SQL直接更新字段,但这很痛苦。是否有我发现的南方命令识别默认值的变化?

谢谢!

1 个答案:

答案 0 :(得分:11)

South不会更新现有列的默认值,因为只有在向非空表中添加新列时才对它很重要。 django orm将在命中数据库之前处理将新的默认值写入新行。

如果您将从外部django orm开始处理数据库,则必须手动更新。

更多解释south/db.add_column