Подтвердить что ты не робот

Вложенные транзакции Django - "with transaction.atomic()"

Я хотел бы знать, есть ли у меня что-то вроде этого:

def functionA():
    with transaction.atomic():
        #save something
        functionB()

def functionB():
    with transaction.atomic():
        #save another thing

Кто-то знает, что произойдет? Если функция B не работает, функция A также откатится назад?

Спасибо!

4b9b3361

Ответ 1

Да, если исключение произойдет в любой из функций, они оба будут отброшены назад. Из документы:

atomic блоки могут быть вложенными. В этом случае, когда внутренний блок успешно завершен, его эффекты все равно могут быть отброшены, если во внешнем блоке будет добавлено исключение в более поздней точке.