Лучше всего описано в примере. Рассмотрим следующий код (Джанго 1,9)Обработка исключений 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, кажется, через исключение на стороне клиента, но проблема здесь что экземпляр модели сохраняется, хотя я установил @transaction.non_atomic_requests
. Похоже, я делаю что-то неправильно с синтаксисом обработки исключений.
Может ли кто-нибудь указать на то, что именно я должен исправить здесь, чтобы сделать Django с помощью настраиваемого сообщения об исключительных ситуациях клиенту и одновременно обработать весь вид как завершенный неправильно, чтобы транзакция была откатна?