Какой декоратор нужно использовать для создания транзакции
Python
Junior
Без компании
Какой декоратор нужно использовать для создания транзакции
Ответы
Для управления транзакциями в Django используется декоратор `@transaction.atomic`. Он гарантирует атомарность блока кода - либо все операции внутри выполнятся успешно, либо ни одна из них не применится.
```
from django.db import transaction
@transaction.atomic
def transfer_funds(from_account, to_account, amount):
from_account.balance -= amount
from_account.save()
to_account.balance += amount
to_account.save()
```
Ключевые особенности:
- При ошибке внутри блока происходит откат всех изменений
- Можно использовать как декоратор функции, так и как контекстный менеджер
- Поддерживает вложенные транзакции через savepoints
- По умолчанию работает на уровне базы данных
Для более сложных сценариев можно использовать `transaction.on_commit()` для отложенных действий после успешного коммита.