Django异常处理取消非原子事务模式

时间:2016-11-24 15:48:45

标签: python django exception-handling

以身作则最佳描述。 请考虑以下代码( Django 1.9

查看:

@transaction.non_atomic_requests
def error_generating_view(request):
    modelA = ModelA(...)
    modelA.save()
    if (some_bad_condition)
       return json_error_msg ('Some custom message')
    return HttpResponse(True)

在其他模块中查看

def json_error_msg(error_message):
    return JsonResponse(json.dumps(error_message, ensure_ascii=False), status = 500, safe = False)

Django似乎通过客户端的异常,但这里的问题是我保存了modelA实例,尽管我设置了@transaction.non_atomic_requests。看起来我在使用异常处理语法时出错了。

任何人都可以指出我应该在这里纠正什么来通过自定义异常消息将Django发送到客户端并同时将整个视图视为未正确终止以便事务回滚?

1 个答案:

答案 0 :(得分:1)

使用transaction.atomic装饰器而非transaction.non_atomic_requests - 使用你告诉Django的transaction.non_atomic_requests,此请求不应包含在事务中(每次更改都会自动提交到数据库) )