什么是on_delete = models.PROTECT和on_delete = models.CASCADE在Django模型上做什么?

时间:2018-05-24 06:37:20

标签: python django django-models

我对Django非常熟悉,但最近注意到模型中存在on_delete = models.CASCADE和on_delete = models.PROTECT选项,

  • on_delete = models.CASCADE和on_delete = models.PROTECT都在做同样的事情。
  • 或两者都相同(我只使用on_delete = models.CASCADE,当我删除父条目时,它将删除所有相关条目)

    我搜索了相同的文档,但找不到更多内容,

  

Django 2.0

     

多对一的关系。需要两个位置参数:   与模型相关的类和on_delete选项。        要创建一个递归关系 - 一个与自身具有多对一关系的对象 - 使用models.ForeignKey('self',   on_delete = models.CASCADE)。

1 个答案:

答案 0 :(得分:4)

  • CASCADE 级联删除。 Django模仿的行为 SQL constraint ON DELETE CASCADE并删除该对象 包含ForeignKey

  • PROTECT 防止raising删除引用的对象 ProtectedErrordjango.db.IntegrityError的子类。

事情会被删除,因为一旦您更改了模型,您需要makemigrationsmigrate来查看更改。