Встречается на собеседованиях • сегодня
Внутри ли транзакции вызывается post_save
Да, сигнал post_save вызывается внутри транзакции. Когда вы сохраняете модель с помощью save(), Django автоматически оборачивает операцию в транзакцию (если не отключено в настройках). Сигнал post_save срабатывает после успешного сохранения, но до фиксации транзакции. Это важно учитывать, если в обработчике сигнала выполняются критические операции.
Пример:
python
from django.db import transaction
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=MyModel)
def handle_post_save(sender, instance, created, **kwargs):
# Этот код выполняется внутри транзакции
if created:
print("New instance created, but transaction not committed yet")
# Если здесь произойдет исключение, транзакция откатитсяЕсли транзакция будет откачена, изменения, сделанные в обработчике post_save, также откатятся. Для операций, которые должны выполняться после успешного коммита, используйте transaction.on_commit().

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы