シグナルを使用した再帰に関するStackOverflowの投稿は多数post_save
あり、コメントと回答は圧倒的に多くなっています。「save()をオーバーライドしないのはなぜですか」、またはでのみ起動される保存ですcreated == True
。
使用しないのは良いケースだとsave()
思います。たとえば、注文モデルとは完全に別の注文履行データを処理する一時的なアプリケーションを追加しています。
フレームワークの残りの部分は、フルフィルメントアプリケーションを幸いにも認識せず、post_saveフックを使用すると、すべてのフルフィルメント関連のコードがOrderモデルから分離されます。
フルフィルメントサービスを削除しても、コアコードについては何も変更する必要はありません。フルフィルメントアプリを削除しました。それだけです。
それで、post_saveシグナルが同じハンドラーを2回起動しないようにするための適切な方法はありますか?