Jus*_*ill 3 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)。
Muj*_*que 28
为了on_delete=models.CASCADE:
您有 2 个模型,即Car和Company。你删除了该公司,你也就删除了该公司生产的汽车。
为了on_delete=models.PROTECT:
你有 2 个模型。汽车和公司。你删除公司,姜戈说,等等。做不到……所以一切都剩下了。
CASCADE
级联删除。Django模拟的行为,
SQL constraint ON DELETE CASCADE并删除包含的对象ForeignKey。
PROTECT
防止通过raising
ProtectedError的子类删除引用的对象django.db.IntegrityError。
这些东西会被删除,因为一旦您更改了模型,就需要进行更改makemigrations并migrate查看更改。