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

Как сделать транзакцию в Django

В Django транзакции реализуются через модуль django.db.transaction. Основные способы:

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

@transaction.atomic
def view_func(request):
    # Код внутри транзакции
    obj1.save()
    obj2.save()  # Если ошибка - откатываются оба сохранения
  1. Контекстный менеджер:
python
def view_func(request):
    with transaction.atomic():
        # Код внутри транзакции
        obj1.save()
        obj2.save()
  1. Вложенные транзакции (savepoints):
python
with transaction.atomic():
    obj1.save()
    savepoint = transaction.savepoint()  # точка сохранения
    try:
        obj2.save()
    except:
        transaction.savepoint_rollback(savepoint)  # откат к savepoint

При ошибке внутри блока транзакции происходит автоматический откат. Для PostgreSQL и MySQL транзакции работают по-разному (например, в MySQL не все движки поддерживают транзакции).

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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