Встречается на собеседованиях • сегодня

Расскажи как делать транзакции в Django ORM

В Django ORM транзакции позволяют выполнять несколько операций с БД как единое целое. Основные способы:

  1. Декоратор @transaction.atomic:
python
from django.db import transaction

@transaction.atomic
def update_data():
    # Все операции внутри выполнятся в одной транзакции
    model1.save()
    model2.save()
    # Если возникнет исключение - все изменения откатятся
  1. Контекстный менеджер atomic():
python
with transaction.atomic():
    # Блок кода в транзакции
    obj1.save()
    obj2.delete()
  1. Вложенные транзакции (savepoints):
python
with transaction.atomic():  # Внешняя транзакция
    obj1.save()
    try:
        with transaction.atomic():  # Внутренняя точка сохранения
            obj2.save()
            raise Exception
    except Exception:
        pass  # Откатится только obj2, obj1 сохранится

Ключевые особенности:

  • По умолчанию Django использует autocommit режим
  • Транзакции поддерживаются только для операций с БД
  • При ошибке происходит автоматический rollback
  • Можно явно откатить через transaction.set_rollback(True)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы