Django:混合TransactionMiddleware和commit_on_success()

时间:2014-02-11 05:42:40

标签: python django postgresql transactions nested

我对嵌套的Django Transactions感到有点困惑。

TransactionMiddleware已启用,我将Django 1.5Postgres 9.1一起使用。

如果我在代码中使用transaction.commit_on_success()会怎样?由于TransactionMiddleware,交易已经开启。

  1. 此代码块中的所有内容都在新事务中运行吗?外部交易保持不变并在之后继续?

  2. 提交外部事务,为额外代码块创建并提交新事务,然后启动第三个事务?

  3. 在离开代码块后,是否没有启动新事务并且当前是否已提交?

  4. 这是我的具体问题:

      class User:
        [..]
    
      class Install:
        user = ForeignKey(User)
    
      install.user == user1 #given and True
    
      install.user = user2
      install.save()
      user1.delete()
    

    删除对象时,Django会删除所有指向此对象的外键对象,因此无意中删除了安装。

    install.save()包裹在transaction.commit_on_success()中保留安装吗?

0 个答案:

没有答案