Следует ли @transaction.atomic за вызовами функций

Я хочу подтвердить свою теорию. Я читал документацию, но, возможно, я читаю неправильно

Допустим, у нас есть

@transaction.atomic
def create(...):
    few queries...
    func_a()
    return

def func_a():
    also running few queries... 

Если запросы не выполняются внутри func_a, произойдет ли атомарный откат транзакции? Я пытаюсь понять, обертывает ли она весь поток выполнения или только функцию create в этом сценарии.

Простите, если мой вопрос немного глупый

Если запросы не выполняются внутри func_a, произойдет ли атомарный откат транзакции?

Да, Django обернет все запросы, которые вы выполняете, даже внутри вызовов функций. В вашем примере, если func_a() вызовет исключение для create(), это заставит транзакцию откатиться.

Пример использования атомов в документации: https://docs.djangoproject.com/en/4.1/topics/db/transactions/#django.db.transaction.atomic

from django.db import transaction

@transaction.atomic
def viewfunc(request):
    # The function bellow executes inside a transaction.
    do_stuff()
# or
def viewfunc(request):
    # This code executes in autocommit mode (Django's default).
    do_stuff()

    with transaction.atomic():
        # This code executes inside a transaction.
        do_more_stuff()
Вернуться на верх