我的模型中有一个CharField
,后来我决定改为ForeignKey
. 所以当我尝试迁移时,它不会迁移,因为我已经为我的字段分配了 char 值。我知道我可以在我的模型中删除这个字段并创建一个新字段,然后在我的代码中的任何地方更改它,或者我可以手动删除数据库中的所有值。但是是否有第三种选择,如果字段中的值与父模型中的适当 id 无关,它会被设置为 null。
我认为您正在寻找的是Data Migrations。我会通过两次迁移来处理这个问题。首先,添加一个新的 ForeignKey 字段并设置数据迁移以处理从现有 CharField 填充它。在第二次迁移中,删除现有的 CharField。
这是我要做的:
models.ForeignKey
在您的模型上创建一个新字段。- 通过数据迁移或通过 python shell 填充该列。
- 将外键设置为
null=False
- 将所有查询从使用旧的 CharField 转换为使用新的 ForeignKey。
- 删除旧的 CharField。
查看如何创建自定义迁移,它们允许您编写任意 SQL 来执行更复杂的转换
谢谢。这就是我一直在寻找的。我刚开始接触 python,所以我还不知道很多基础知识。