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

Python Junior Без компании
Как сделать транзакцию в Django
Ответы
В Django транзакции реализуются через модуль `django.db.transaction`. Основные способы: - **Декоратор `@transaction.atomic`**: ``` from django.db import transaction @transaction.atomic def view_func(request): # Код внутри транзакции obj1.save() obj2.save() # Если ошибка - откатываются оба сохранения ``` - **Контекстный менеджер**: ``` def view_func(request): with transaction.atomic(): # Код внутри транзакции obj1.save() obj2.save() ``` - **Вложенные транзакции** (savepoints): ``` with transaction.atomic(): obj1.save() savepoint = transaction.savepoint() # точка сохранения try: obj2.save() except: transaction.savepoint_rollback(savepoint) # откат к savepoint ``` При ошибке внутри блока транзакции происходит автоматический откат. Для PostgreSQL и MySQL транзакции работают по-разному (например, в MySQL не все движки поддерживают транзакции).