以身作则最佳描述。 请考虑以下代码( 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发送到客户端并同时将整个视图视为未正确终止以便事务回滚?
答案 0 :(得分:1)
使用transaction.atomic
装饰器而非transaction.non_atomic_requests
- 使用你告诉Django的transaction.non_atomic_requests
,此请求不应包含在事务中(每次更改都会自动提交到数据库) )