2

希望问题很清楚。我正在尝试在 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() 已保存到数据库中?

4

1 回答 1

3

根据文档

如果代码块成功完成,则将更改提交到数据库。如果出现异常,则回滚更改。

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

于 2013-06-19T23:04:17.660 回答