【问题标题】:Why does Django only emulate ON DELETE CASCADE?为什么 Django 只模拟 ON DELETE CASCADE?
【发布时间】:2018-12-02 03:14:11
【问题描述】:

我最近了解到Django's on_delete=CASCADE only emulates ON DELETE CASCADE -- 如果我将DELETE FROM ParentTable 作为显式 SQL 运行,当子表的行具有父表的活动外键时,它将失败。

为什么 Django 是这样设计的?当它可以更轻松地将ON DELETE CASCADE 添加到数据库本身的表中时,为什么它会在 Python 层重现这种行为?

【问题讨论】:

标签: sql django django-models foreign-keys cascade


【解决方案1】:

尽管我不是他们团队的一员,但我认为 Django 开发人员以这种方式实现它的主要原因有两个。

1) 兼容性

在 ORM 中实现这种机制是合乎逻辑的,因为它可以更轻松地支持多种数据库类型。

2) 应用通知

通过实现自己的级联逻辑,他们能够知道何时以及如何删除相关数据库中的数据。考虑到 Django 的工作方式,这一点尤其重要。

【讨论】:

    猜你喜欢
    • 2010-12-27
    • 2014-09-26
    • 1970-01-01
    • 2019-07-12
    • 2018-12-01
    • 2011-08-27
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多