我尝试更新使用commit_manually
到atomic
的代码转到Django 1.7然后1.8但是我遇到了无法rollback
的问题而在一个原子块中。问题源于我们在导入例程dry_run中添加的标志。在之前的Django版本@commit_manually
允许我们执行以下操作:
if self.dry_run:
transaction.rollback()
else:
transaction.commit()
如果我尝试在atomic
块中执行回滚,则会抛出错误:
TransactionManagementError:"当一个' atomic'阻止活动。"
为了实现这一点,我尝试使用set_autocommit
示例:
def do_some_import(self)
transaction.set_autocommit(False)
#import routine
if self.dry_run:
transaction.rollback()
transaction.set_autocommit(True)
else:
transaction.commit()
transaction.set_autocommit(True)
但这对任何建议或见解都有误?
答案 0 :(得分:1)
你试过set_rollback()
吗?我想这会解决你的问题。
@transaction.atomic
def do_some_import(self):
#import routine
if self.dry_run:
transaction.set_rollback(True)