Как обрабатываются взаимозависимые вызовы db в transaction.atomic

У меня есть два вызова БД внутри transaction.atomic()

Коды выборки

with transaction.atomic():
    result1, created = SomeModel.objects.get_or_create(**somedata)
    if not created:
        flag = SomeOtherModel.objects.filter(somemodel=result1).exists()
        if flag:
            result1.some_attr = value1 if flag else value2
            result1.save()

AFAIK о transaction.atomic, когда мои питоновские коды не вызывают исключений, поэтому все вызовы БД будут зафиксированы на БД. Если внутри блока возникло исключение, ни одна операция с БД не будет зафиксирована в БД.

Как обрабатывается эта вещь, когда вызов DB одного используется в логике python для выполнения других операций с DB? Не нашел этого вида в документации, если есть хороший источник, пожалуйста, укажите его.

<

Вот хорошее сообщение на StackOverflow, которое я нашел, с некоторыми хорошими разговорами вокруг этого: Транзакции в базе данных - как они работают?

Вернуться на верх