【问题标题】:How do I delete in Django? (mysql transactions)如何在 Django 中删除? (mysql事务)
【发布时间】:2010-05-08 21:55:50
【问题描述】:

如果你熟悉 Django,你就会知道他们有一个带有User model 的身份验证系统。当然,我还有很多其他表都有这个User 模型的外键。

如果我想删除这个用户,我如何构建一个脚本(或通过 mysql 本身)来删除与这个用户相关的每个表?

我唯一担心的是我可以手动执行此操作...但是如果我添加了一个表,但我忘记将该表添加到我的 DELETE 操作中...然后我有一行链接到已删除的非现有用户。

【问题讨论】:

    标签: python mysql database django transactions


    【解决方案1】:

    据我了解,django 默认执行“on delete cascade”: http://docs.djangoproject.com/en/dev/topics/db/queries/#deleting-objects

    【讨论】:

      【解决方案2】:

      您不需要为此编写脚本。当你删除一条记录时,Django 会自动删除所有依赖的记录(从而照顾自己的数据库完整性)。

      这很容易测试。在管理员中,去删除一个用户。在确认页面上,您将看到系统中所有相关记录的列表。您可以随时将其用作快速测试,以查看哪些内容依赖于哪些内容(只要您实际上没有点击确认)。

      如果您使用.delete() 从您的视图代码中执行删除,所有依赖对象将被自动删除,并且没有确认选项。

      来自docs

      当 Django 删除一个对象时,它 模拟 SQL 的行为 对 DELETE CASCADE 的约束——在 换句话说,任何具有 指向对象的外键 被删除将连同被删除 它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-10
        • 2018-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        相关资源
        最近更新 更多