モデル用にいくつかのスマートな汎用カウンターとマネージャーを作成しました (select count
クエリなどを避けるため)。したがって、私は post_save のためにいくつかの重いロジックを実行しています。
必要がないときにシグナルを処理しないようにしたいと思います。完璧なインターフェースは次のようになると思います:
instance.save(dispatch_signal=False)
どうすればこれを達成できますか?
アップデート
誰かが興味を持っている場合は、私が何をしているのかについての詳細情報:
- 汎用カウンターは別のテーブルに格納されます
- Django がオブジェクト リストを改ページするたびに、カスタム マネージャーのオーバーライドされた count() メソッドを呼び出します。これは基本的に、適切なオブジェクト クラスの静的カウンター値を取得します。
- 信号は、カウンター更新のロジックをトリガーします。これは、関連するモデルの多くの側面をチェックするため、少し複雑です (つまり、ネストされたカテゴリ ツリーに基づいて可視性プロパティを生成する必要があります)。1 つのカウンターが多くの異なるモデルに依存しているため、このロジックを Model.save() に入れることはできません。そのロジックをバラバラにばらばらにするのではなく、ひとつにまとめたいと思っています。
- モデルの一部を非正規化しているため、テーブル全体で特定の値を書き換え (複製) しています。
- テスト目的で、小さなコマンド拡張 ( Dilla ) を実行して、ランダムなデータを設定します。
- 不要なシグナルがトリガーされていることに気付いたので、条件付きで実行したいと思います。
それが十分に明確であることを願っています。言葉の間違いをお許しください。