我有一个视图,其中我做了一系列的模型保存:
with transaction.atomic():
modelA.save()
modelB.save()
...
我希望一次完成所有保存,但是当我在执行modelA.save()
之后和执行modelB.save()
之前检查数据库时,我看到表modelA
写入已更改,即对modelA
的写入已经提交给db。我认为transaction.atomic()
块中的所有写入都将在最后一起提交。我错过了什么?我使用的是django 1.10和Oracle 12g。感谢
答案 0 :(得分:1)
如果您使用多个数据库,则应指定要与using
使用的数据库:
with transaction.atomic(using='my_db'):
modelA.save()
modelB.save()
答案 1 :(得分:0)
我找到了解决方案:
transaction.set_autocommit(False, using='my_db')
modelA.save()
modelB.save()
transaction.commit(using='my_db')
transaction.set_autocommit(True, using='my_db')
我的问题是对所讨论的db表的约束意味着必须将保存作为一个事务完成。由于某种原因,transaction.atomic()不起作用......