我有一个+-------------+
| from |
+-------------+
| home |
+-------------+
模型和相关的Tournament
:
Standings
我刚才做了以下事情:
class Tournament(models.Model):
standings = models.ForeignKey('Standings', blank=True, null=True)
它也删除了相关的比赛。由于standings = Standings.objects.get(pk=pk)
standings.delete()
是可为空的字段,因此这本不应该发生。
为什么会发生这种情况,我该怎么做才能防止这种情况再次发生?
答案 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)