2016-11-24 10 views
0

例で最もよく説明されています。ここDjangoの例外処理で非アトミックトランザクションモードがキャンセルされます

@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はクライアント側に例外を介しているようだ、他のモジュールではなく、問題: 次のコード(ジャンゴ1.9

ビューを考えてみましょう私は@transaction.non_atomic_requestsを設定しましたが、そのモデルはインスタンスが保存されています。私は例外処理の文法に間違ったことをしているようです。

Djangoをカスタマイズした例外メッセージをクライアントに送信し、同時にビュー全体を誤って処理してトランザクションをロールバックするように修正する必要がありますか?

答えて

1

使用transaction.atomicデコレータ、ないtransaction.non_atomic_requestsからtransaction.non_atomic_requestsを使用することによって、あなたがこの要求がトランザクションでラップしてはならないことを、ジャンゴを言っている(すべての変更が自動コミットデータベースにある)

関連する問題