2016-11-24 42 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的,這個請求應該不會在交易(每一個變化是自動將提交給數據庫)

包裹