【问题标题】:what does on_delete=models.PROTECT and on_delete=models.CASCADE do on Django models?on_delete=models.PROTECT 和 on_delete=models.CASCADE 对 Django 模型有什么作用?
【发布时间】:2018-11-03 06:42:27
【问题描述】:

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

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

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

Django 2.0

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

【问题讨论】:

标签: python django django-models


【解决方案1】:
  • CASCADE 级联删除。 Django 模仿 SQL constraint ON DELETE CASCADE 并且还删除了对象 包含ForeignKey

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

这些内容会被删除,因为一旦您更改了模型,您需要执行 makemigrationsmigrate 才能看到更改。

【讨论】:

  • 在 Django 2.0 之前保持行为的更好选择是哪个,并且不会使应用程序崩溃?谢谢,
  • 这个中贴有很清楚的解释:medium.com/@inem.patrick/…
猜你喜欢
  • 1970-01-01
  • 2017-06-22
  • 2018-07-27
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 2020-11-08
  • 2020-07-10
相关资源
最近更新 更多