Python Django-将更改迁移到关系字段时终端中的IntegrityError
我有一个像下面这样的Django模型Python Django-将更改迁移到关系字段时终端中的IntegrityError,python,django,Python,Django,我有一个像下面这样的Django模型 class ExampleModel(models.Model): name = models.CharField(...) related_user = models.ForeignKey(UserTypeA, related_name='related_example', blank=True, null=True, on_delete=models.SET_NULL) 我最近不得不通过将ForeignKey从UserTypeA更改为U
class ExampleModel(models.Model):
name = models.CharField(...)
related_user = models.ForeignKey(UserTypeA, related_name='related_example', blank=True, null=True, on_delete=models.SET_NULL)
我最近不得不通过将ForeignKey
从UserTypeA
更改为UserTypeB
来更改related\u user
字段
当然,当我尝试python manage.py makemigration
时,这会在终端中引发一个错误
django.db.utils.IntegrityError: insert or update on table "models_examplemodel" violates foreign key constraint "models_examplemodel_related_user_id_ac0c6018_fk_accounts_"
DETAIL: Key (related_user_id)=(13) is not present in table "accounts_usertypea".
进行这些更改最安全的方法是什么?目前我正在开发中,所以我很乐意删除我的数据/迁移/任何东西,但我想在生产中这会很困难
我想在这里看到的理想行为是刚刚被删除的
ExampleModel
和UserTypeA
之间的关系,因此当前关系将设置为NULL
。想法?如果您只想删除UserTypeA
并将UserTypeB
与None
值一起使用,只需执行以下操作:
- 删除
字段相关用户
- 生成迁移
- 添加
字段相关用户
- 生成混合
UserTypeA
填写UserTypeB
),以下是步骤
- 添加
字段,默认为空实时用户\u b
- 生成迁移文件
- 编写一个数据迁移文件,根据当前数据填充
realted\u user\b
- 删除
字段realted\u用户
- 生成迁移文件
- 将
重命名为realted\u user\u b
realted\u user
- 生成迁移文件
UserTypeA
并将UserTypeB
与None
值一起使用,只需执行以下操作:
- 删除
字段相关用户
- 生成迁移
- 添加
字段相关用户
- 生成混合
UserTypeA
填写UserTypeB
),以下是步骤
- 添加
字段,默认为空实时用户\u b
- 生成迁移文件
- 编写一个数据迁移文件,根据当前数据填充
realted\u user\b
- 删除
字段realted\u用户
- 生成迁移文件
- 将
重命名为realted\u user\u b
realted\u user
- 生成迁移文件