Django模型 - 如何取消on_delete = models.CASCADE

时间:2017-02-05 07:54:04

标签: python django django-models migration cascading-deletes

尝试将字段从级联迁移到“非级联”似乎被忽略(Django 1.10)。

以前的型号:

class Run(models.Model):
    ...
    analysis_retention = models.ForeignKey('analysis_retention.AnalysisRetention',
                                           null=True, default=None, on_delete=models.CASCADE)

新模式:

class Run(models.Model):
    ...
    analysis_retention = models.ForeignKey('analysis_retention.AnalysisRetention',
                                           null=True, default=None)

“manage.py makemigrations”未检测到更改。 尝试显式无效无济于事。

删除级联的方法是什么?

由于

1 个答案:

答案 0 :(得分:2)

CASCADEon_delete参数的默认值,请参阅source。因此,删除on_delete=models.CASCADE将不起作用。您需要在代码中指定on_delete值:

analysis_retention = models.ForeignKey('analysis_retention.AnalysisRetention',
                                       null=True, default=None, on_delete=models.SET_NULL)