【问题标题】:Django admin: turning off DB transactionsDjango 管理员:关闭数据库事务
【发布时间】:2010-11-02 20:08:19
【问题描述】:

我注意到默认情况下,django 管理站点中的所有更新都是作为事务完成的。

我需要: - 关闭事务(全局或特定管理视图) - 在通过管理界面保存的实体的 save() 方法中,提交事务

原因是我覆盖了 save() 方法,并通知了外部的非 django 系统刚刚发生的更改。但是,外部系统看不到更新,因为 django 还没有提交事务。

有人对如何实现这一点有任何建议吗?

【问题讨论】:

  • 好问题。这是 Django 管理员中竞争条件的常见来源,如果您不知道 Django 在视图中使用事务,这可能是一个令人难以置信的令人沮丧的问题。
  • 我们在pypi.python.org/pypi/django-celery-transactions 方面取得了很大的成功。这样做是为了确保在启动后台任务时运行的事务在允许任务运行之前完成

标签: database django transactions django-admin


【解决方案1】:

更好的解决方案可能是调查数据库的事务隔离设置,因为这是外部进程无法“看到”更新的真正原因...

【讨论】:

    【解决方案2】:

    您可以使用commit_manually 来完全控制特定视图/功能中的事务。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      相关资源
      最近更新 更多