gpt4 book ai didi

django - 如何使用 South 重命名外键字段?

转载 作者:行者123 更新时间:2023-12-03 22:49:39 26 4
gpt4 key购买 nike

重命名一个简单的 charfield 等似乎很容易( Django - How to rename a model field using South? )

但是,当我尝试在 ForeignKey 字段上使用相同的内容时,出现错误:

_mysql_exceptions.OperationalError: (1091, "Can't DROP '[new_fkey_field_name]'; check that column/key exists")

这源于由于某种原因试图向后运行的迁移(如跟踪所示)。

有任何想法吗?

最佳答案

首先,您需要使用 db 列名而不是模型中的列名。例如:foobar_id 不是 foobar。

然后您需要删除 fk 约束并在重命名后重新创建它们:

db.drop_foreign_key('app_model', 'old_id')
db.rename_column('app_model', 'old_id', 'new_id')
db.alter_column('app_model', 'new_id', models.ForeignKey(to=orm['app.OtherModel']))

如果您的 fk 可以为空,则需要使用将其更改为:
db.alter_column('app_model', 'new_id', models.ForeignKey(null=True, to=orm['app.OtherModel']))

关于django - 如何使用 South 重命名外键字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3485176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com