Python 在南方,我可以将旧列的值复制到新列吗?

Python 在南方,我可以将旧列的值复制到新列吗?,python,django,django-models,django-south,Python,Django,Django Models,Django South,我的Django模型之一是一个子类,我想将其超类更改为与原始模型非常相似的超类。特别是,新的超类描述相同的对象并具有相同的主键。如何让South创建新的OneToOne字段并将值从旧字段复制到新字段?在South,有两种迁移:模式迁移和数据迁移 创建schemamigration后,创建相应的数据迁移: /manage.py数据迁移详细介绍了这一点。它向您展示了如何使用South的orm引用在模式迁移之前使用模式访问数据库,并提供了对数据库的访问,而Django不会抱怨它不理解的字段 如果要重命

我的Django模型之一是一个子类,我想将其超类更改为与原始模型非常相似的超类。特别是,新的超类描述相同的对象并具有相同的主键。如何让South创建新的OneToOne字段并将值从旧字段复制到新字段?

在South,有两种迁移:模式迁移和数据迁移

创建schemamigration后,创建相应的数据迁移:

/manage.py数据迁移详细介绍了这一点。它向您展示了如何使用South的
orm
引用在模式迁移之前使用模式访问数据库,并提供了对数据库的访问,而Django不会抱怨它不理解的字段

如果要重命名一个类,这可能会很棘手——它涉及到创建新表、从一个表迁移到另一个表以及删除旧表。南方可以做到这一点,但可能需要不止一次的模式转换和数据迁移

South还有
backwards()
方法,允许您将数据库表返回到上一步。在某些情况下,这可能是不可能的;新表可能记录降级过程中丢失的信息。如果您未处于调试模式,我建议在
backwards()
中使用抛出异常