有没有办法在Django中覆盖外键删除保护?

时间:2018-05-21 01:15:46

标签: django django-models

我有一个已经运行多年的webapp,其中一组模型通过外键与on_delete=models.PROTECT互连。这就是我们想要的正常运营。但是,现在我需要从系统中删除旧数据(例如,超过2年的任何东西),因为由于数据量的原因,情况开始变慢。

作为一次性的事情,我有没有办法覆盖on_delete保护?

1 个答案:

答案 0 :(得分:1)

一个想法:使用1)migrations.AlterField()进行自定义迁移,为这些类型的删除设置逻辑on_delete(CASCADE),2)使用migrations.RunPython来调用函数根据您选择的条件删除记录,然后3)migrations.AlterField在迁移结束后将其设置恢复正​​常。显然,首先要对QA转储进行测试!