user3139774
user3139774

Reputation: 1335

Django models - how to cancel on_delete=models.CASCADE

Trying to migrate a field from cascade to "non-cascade" seems to be ignored (Django 1.10).

Previous model:

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

New Model:

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

"manage.py makemigrations" doesn't detect the changes. Trying an explicit None doesn't help.

What would be the way to remove cascading?

Thanks

Upvotes: 2

Views: 1154

Answers (1)

neverwalkaloner
neverwalkaloner

Reputation: 47354

CASCADE is default value for on_delete argument, see source. So deleting on_delete=models.CASCADE will not have effect. You need to specify on_delete value in code:

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

Upvotes: 2

Related Questions