2010-09-06 89 views
2

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

任何一个可以有想法,我怎样才能制止这种“ON DELETE CASCADE”

我将非常感谢全给你。 Regards

回答

4

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

您可能必须更新数据库(和模型定义)以允许您解除锁定的那些密钥为null = True。

10

有一段时间有on_delete属性,可以设置为ForeignKey字段。 Django文档示例:

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