2016-11-24 94 views
0

最好由示例描述。 考虑下面的代码(的Django 1.9Django异常处理取消非原子事务处理模式

查看:

@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

使用transaction.atomic装饰,不transaction.non_atomic_requests - 通过使用transaction.non_atomic_requests你告诉Django的,这个请求应该不会在交易(每一个变化是自动将提交给数据库)

包裹