删除可为空字段将删除相关对象

时间:2019-01-21 11:59:34

标签: python django django-1.8

我有一个+-------------+ | from | +-------------+ | home | +-------------+ 模型和相关的Tournament

Standings

我刚才做了以下事情:

class Tournament(models.Model):
    standings = models.ForeignKey('Standings', blank=True, null=True)

它也删除了相关的比赛。由于standings = Standings.objects.get(pk=pk) standings.delete() 是可为空的字段,因此这本不应该发生。

为什么会发生这种情况,我该怎么做才能防止这种情况再次发生?

1 个答案:

答案 0 :(得分:2)

Django 1.8默认为CASCADE

  

当删除ForeignKey引用的对象时,默认情况下Django模拟SQL约束ON DELETE CASCADE的行为,并删除包含ForeignKey的对象。 / p>

要更改该行为,您应该添加on_delete参数(自Django 2.x开始是必需的),如下所示:

standings = models.ForeignKey(
    'Standings', blank=True, null=True, on_delete=models.SET_NULL)