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

Как реализовать транзакции на Django

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

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

@transaction.atomic
def update_data():
    # Код, который должен выполняться атомарно
    model1.save()
    model2.save()
  1. Контекстный менеджер:
python
from django.db import transaction

def update_data():
    with transaction.atomic():
        model1.save()
        model2.save()
        # При ошибке здесь откатятся все изменения
  1. Сохранение точек отката:
python
with transaction.atomic():
    sid = transaction.savepoint()
    try:
        # Операции
    except:
        transaction.savepoint_rollback(sid)

Особенности:

  • По умолчанию работает на уровне блока кода
  • Для PostgreSQL можно настроить изоляцию
  • Вложенные транзакции создают savepoints
  • Ошибки в atomic-блоке вызывают автоматический откат
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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