我需要使用南迁移重命名我的django模型中的外键。当我找到这个帖子时,我以为我很幸运How to rename a foreignkey field with South?但是,那里描述的所有方法都失败了,有各种错误。有人确实知道这样做的正确方法吗?
我想将SomeModel.registered_to = models.ForeignKey( User )
重命名为SomeModel.owner = models.ForeignKey( User )
,并保持User
和owner
之间的关系。任何帮助都将不胜感激!
答案 0 :(得分:3)
更改字段名称并运行python manage.py schemamigration --auto yourapp
。 South将添加代码以删除列并添加新列。让South生成迁移可确保正确冻结ORM,因此您只需将实际迁移更改为重命名而不是删除和添加。只需从向前和向后迁移中删除这些行,然后将其替换为:
def forwards(self, orm):
db.rename_column('yourapp_yourmodel', 'registered_to_id', 'owner_id')
def backwards(self, orm):
db.rename_column('yourapp_yourmodel', 'owner_id', 'registered_to_id')
保存,然后迁移您的应用。