如果我有以下型号:
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')
还是我真的需要复杂的迁移才能保存数据等?
答案 0 :(得分:0)
您不需要编写自定义迁移。只需更改已定义的字段定义即可。然后照常迁移。
确保当前customer_id
包含那些值在Customer
模型中以pk
值存在。
答案 1 :(得分:0)
如何将字段从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从数据库中获取客户,并保存到订单中。