首页 文章

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

提问于
浏览
0

我对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 回答

  • 1
    • CASCADE 级联删除 . Django模拟 SQL constraint ON DELETE CASCADE 的行为,并删除包含 ForeignKey 的对象 .

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

    这些东西会被删除,因为一旦你改变你的模型,你需要做 makemigrationsmigrate 才能看到变化 .

相关问题