django:删除django的ON DELETE CASCADE行为

时间:2010-09-06 13:20:37

标签: django

我在django开发中遇到了问题。实际上我创建了一个模型,其中包括其他4个模型的外键。现在我在管理站点上使用这些所有模型。问题是,当我删除在主模型中使用foriegn键的记录时,此删除过程也会从我的主模型中删除记录。我要求如果模型包含任何其他模型的forign键,那么如果我从admin中删除此外键模型记录,那么必须从使用此模型作为外键的模型中删除任何记录。

任何人都可以知道如何停止这个'ON DELETE CASCADE'

我将非常感谢你。 此致

2 个答案:

答案 0 :(得分:11)

有一段时间on_delete属性,可以为ForeignKey字段设置。 Django docs的例子:

  user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)

答案 1 :(得分:4)

覆盖MyObj.delete()以迭代您要保留的所有键控关系,将其引用设置回您要删除的对象为null。然后,一旦所有关系都解开,请致电super(MyObj, self).delete()

您可能必须更新您的数据库(和模型定义),以便为您正在解开的那些键允许null = True。