У меня есть такой фрагмент кода в приложении Django
def update_account(user_account,add_widget_count):
user_account.add_widgets(add_widget_count)
user_account.save()
notify_other_system_about_account_update(user_account)
Когда я запускаю это как часть моего приложения, все отлично работает. В частности, когда моя другая система (внешняя по отношению к django) получает уведомление, она проверяет базу данных и обновляет количество виджетов.
Однако, когда я запускаю приведенный выше код с веб-сайта администратора, возникает проблема. Когда моя другая система получает уведомление, она не видит обновленное значение в базе данных. Я подтверждаю, помещая точку останова и проверяя ее в базе данных, и она не обновляется после вызова .save () - при вызове не-admin-site база данных обновляется, когда я проверяю во время этой точки останова. Обновление БД происходит только после того, как приложение запущено.
Промежуточное программное обеспечение администратора django выполняет некоторую задержку или отсрочку записи в БД?
Обновление
Я даже переместил вызов на notify_other_system_about_account_update(user_account)
в обработчик сигнала post_save на моем объекте UserAccount. Сигнал срабатывает, но когда я его получаю. База данных обновляется в какой-то момент после того, как мой обработчик сигнала возвращается. Такое поведение происходит только при запуске изнутри сайта администратора.