Django:事务原子性是否确保在保存数据库之后发生代码?

时间:2013-06-19 21:56:37

标签: python django

希望问题很清楚。我试图在model.save()之后同步处理保存,但由于某些原因我不能使用django信号(所以请不要提到它作为可能的解决方案)

我会:

def viewfunc(request):
    # This code executes in autocommit mode (Django's default).
    do_stuff()

    with transaction.atomic():
        # This code executes inside a transaction.
        do_more_stuff()
    do_even_more_stuff()

当我运行do_even_more_stuff()时,可以安全地假设用do_more_stuff()完成的任何model.save()已经保存到数据库中了吗?

1 个答案:

答案 0 :(得分:2)

根据docs

  

如果代码块成功完成,则更改将提交给数据库。如果存在异常,则会回滚更改。

因此,一般情况的答案是否定的,但如果块完成而没有例外,则可以安全地假设这一点。