У меня есть такой фрагмент кода в приложении 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() - в вызове без прав администратора база данных обновляется, когда я проверяю во время этой точки останова. Только после того, как я позволю приложению работать своим чередом, БД обновится.
Промежуточное программное обеспечение администратора django выполняет какую-то задержку или отсрочку записи od DB?
Обновить
Я даже переместил вызов notify_other_system_about_account_update(user_account)
в обработчик сигнала post_save в моем объекте UserAccount. Сигнал срабатывает, но когда я его получаю. База данных обновляется в какой-то момент после возврата моего обработчика сигнала. Такое поведение происходит только при запуске с веб-сайта администратора.