如果我有以下型号:
Order:
customer_id = models.CharField(max_length=256, null=True)
我可以创建一个空迁移,使用代码在表上创建一个fk,只需将代码更改为:
Order:
customer = models.ForeignKey('Customer', on_delete=models.CASCADE, null=True, related_name='orders')
或者我真的需要复杂的迁移来保存数据等吗?
您无需编写自定义迁移。只需更改您已经显示的字段定义即可。然后像往常一样迁移。确保,目前customer_id
包含的那些值在Customer
模型中作为pk
值存在。
将字段从int / char更改为外键的方法:顺序:
customer_id = models.CharField(max_length=256, null=True)
添加另一个备份字段并将customer_id复制到customer_backup_id
customer_backup_id = models.CharField(max_length=256, null=True)
创建空迁移会将所有customer_id复制到customer_backup_id中
在模型中添加客户字段
customer = models.ForeignKey('Customer', on_delete=models.CASCADE, null=True, blank=True, related_name='orders')
创建另一个空迁移
使用id customer_backup_id从db获取客户,并保存到订单中。