Сигнал Django "after_db_save"
Сигнал post_save, согласно документации, "посылается в конец метода save().", но не после него.
Сценарий
Модель A 'сигнал post_save
используется для вызова другой службы, которая создает модель B, поле a_id является внешним ключом к модели A. Но служба получает ошибку, утверждающую, что PK модели A не существует.
Так существует ли сигнал django, который срабатывает после сохранения экземпляра в базе данных?
Если нет, то как я должен реализовать эту функциональность? Я читал об использовании transaction.on_commit()
, но как бы я использовал его внутри сигнала?
Я не смог заставить работать транзакцию, но решил эту проблему, перегрузив задачу в очередь задач (huey
в моем случае). Просто сделайте функцию, украсьте ее @db_task
и вызовите ее внутри сигнала post_save
.