Django:将字段从Int / Char更改为ForgeinKey

问题描述 投票:1回答:2

如果我有以下型号:

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')

或者我真的需要复杂的迁移来保存数据等吗?

django django-models django-rest-framework
2个回答
0
投票

您无需编写自定义迁移。只需更改您已经显示的字段定义即可。然后像往常一样迁移。确保,目前customer_id包含的那些值在Customer模型中作为pk值存在。


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从db获取客户,并保存到订单中。

© www.soinside.com 2019 - 2024. All rights reserved.