作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只需要在 上确认我的理解Django 对 ON DELETE CASCADE 的实现 来自 Django 专家。
根据 Django 官方文档:
When Django deletes an object, by default it emulates the behavior of the SQL constraint ON DELETE CASCADE -- in other words, any objects which had foreign keys pointing at the object to be deleted will be deleted along with it.
最佳答案
如果问相关代码是在哪里实现的:可以找到here .
在应用程序/ORM 层中实现 CASCADE-DELETE 逻辑是有意义的,因为这使应用程序能够在删除发生时得到通知(例如,为已删除的实例触发 Django 的删除信号),此外,这是启用此功能的明智方法不同类型的数据库。
如果您担心数据的完整性:如果您的数据库支持,Django 仍会设置外键约束(例如检查 Postgresql)。所以你的数据库不会让你删除外键指向的任何行。
自己试试:
> DELETE FROM accounts_publisher WHERE id=5;
ERROR: update or delete on table "accounts_publisher" violates foreign key constraint "accounts_publisher_id_411559b18a178e73_fk_accounts_publisher_id" on table "accounts_membership"
DETAIL: Key (id)=(5) is still referenced from table "accounts_membership".
关于django - Django 中实现的 ON DELETE CASCADE 逻辑在哪里? (使用的是PostgreSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712691/
我是一名优秀的程序员,十分优秀!