我对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 回答
CASCADE
级联删除 . Django模拟SQL constraint ON DELETE CASCADE
的行为,并删除包含ForeignKey
的对象 .PROTECT
防止raising
ProtectedError
(django.db.IntegrityError
的子类)删除引用的对象 .这些东西会被删除,因为一旦你改变你的模型,你需要做
makemigrations
和migrate
才能看到变化 .