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 の外部) が通知を受け取ると、データベースがチェックされ、ウィジェット数が更新されます。
ただし、管理 Web サイトから上記のコードを実行すると、問題が発生します。他のシステムが通知を受け取ると、データベースに更新された値が表示されません。ブレークポイントを配置してデータベースをチェックインすることで確認しましたが、.save() の呼び出し後に更新されません。非管理サイト呼び出しでは、このブレークポイント中にチェックすると DB が更新されます。アプリにコースを実行させた後でのみ、DB が更新されます。
django admin ミドルウェアは、OD DB の書き込みを何らかの遅延または延期していますか?
アップデート
notify_other_system_about_account_update(user_account)
UserAccount オブジェクトの post_save シグナル ハンドラーへの呼び出しも移動しました。信号が発火しますが、それを取得すると。シグナル ハンドラが返された後、ある時点でデータベースが更新されます。この動作は、管理 Web サイト内から実行している場合にのみ発生します。