問題タブ [django-signals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Djangoシグナルとオーバーライド保存メソッド
これに頭を巻くのに苦労しています。現在、次のようなモデルがいくつかあります。
レビューにはいくつかの「スコア」があり、overall_scoreはスコアの平均です。レビューまたはスコアが保存されたら、overall_score平均を再計算する必要があります。現在、オーバーライドされた保存メソッドを使用しています。Djangoのシグナルディスパッチャーを使用することに何か利点はありますか?
python - m2mフィールドのpost_saveシグナル
私はかなり一般的なArticleモデルを持っており、タグモデルとm2mの関係があります。各タグの使用回数を記録したいのですが、タグモデルのカウントフィールドを非正規化し、記事が保存されるたびに更新するのが最善の方法だと思います。どうすればこれを達成できますか、またはもっと良い方法がありますか?
django - 更新フィールドまたは COUNT クエリを使用する方が「良い」ですか?
私が取り組んでいるDjangoアプリでは、これが起こっています:
avg_child_ratingに頻繁にアクセスする予定 です。次のことを行った場合、最適化されますか?
現在の違いは、子が作成/評価/削除されるたびに、親オブジェクトが更新されることです。作成/評価が頻繁に行われることを知っています。
より高価なものは何ですか?
python - 一度保存した後にモデルインスタンスを読み取り専用にする方法は?
私が書いている Django プロジェクトの機能の 1 つは、ニュースレターの送信です。の信号をリッスンするために登録したモデルNewsletter
と関数があります。ニュースレター オブジェクトが管理インターフェイス経由で保存されると、が True かどうかをチェックし、はいの場合は実際にメールを送信します。send_newsletter
Newsletter
post_save
send_newsletter
created
ただし、明らかな理由から、既に送信されたニュースレターを編集することはあまり意味がありません。Newsletter
保存したオブジェクトを読み取り専用にする方法はありますか?
編集:
オブジェクトのメソッドをオーバーライドしsave
てエラーを発生させたり、オブジェクトが存在する場合は何もしないことがわかっています。しかし、私はそれをする意味がわかりません。前者に関しては、そのエラーをどこでキャッチするか、オブジェクトが保存されていないという事実をユーザーに伝える方法がわかりません。後者に関しては、ユーザーに誤ったフィードバック (保存が成功したことを示す管理者インターフェース) を与えることは良いことのようには思えません。
私が本当に望んでいるのは、ユーザーが管理インターフェイスを使用してニュースレターを作成して送信し、送信済みのニュースレターを閲覧できるようにすることです。「保存」ボタンを使用せずに、編集不可の入力ボックスに送信済みニュースレターのデータを表示する管理インターフェイスを希望します。または、「保存」ボタンを非アクティブにしたいと思います。
python - Django - どうすればシグナルを送信_しない_ことができますか?
モデル用にいくつかのスマートな汎用カウンターとマネージャーを作成しました (select count
クエリなどを避けるため)。したがって、私は post_save のためにいくつかの重いロジックを実行しています。
必要がないときにシグナルを処理しないようにしたいと思います。完璧なインターフェースは次のようになると思います:
どうすればこれを達成できますか?
アップデート
誰かが興味を持っている場合は、私が何をしているのかについての詳細情報:
- 汎用カウンターは別のテーブルに格納されます
- Django がオブジェクト リストを改ページするたびに、カスタム マネージャーのオーバーライドされた count() メソッドを呼び出します。これは基本的に、適切なオブジェクト クラスの静的カウンター値を取得します。
- 信号は、カウンター更新のロジックをトリガーします。これは、関連するモデルの多くの側面をチェックするため、少し複雑です (つまり、ネストされたカテゴリ ツリーに基づいて可視性プロパティを生成する必要があります)。1 つのカウンターが多くの異なるモデルに依存しているため、このロジックを Model.save() に入れることはできません。そのロジックをバラバラにばらばらにするのではなく、ひとつにまとめたいと思っています。
- モデルの一部を非正規化しているため、テーブル全体で特定の値を書き換え (複製) しています。
- テスト目的で、小さなコマンド拡張 ( Dilla ) を実行して、ランダムなデータを設定します。
- 不要なシグナルがトリガーされていることに気付いたので、条件付きで実行したいと思います。
それが十分に明確であることを願っています。言葉の間違いをお許しください。
python - シグナルを単純にイベントと呼ばないのはなぜですか?
私が知る限り、Python と Django では、シグナルは単に委任されたイベントです。C#、Java、ActionScript などの一般的なイベントの概念と機能的に区別するものはありますか?
django - Djangoモデルは保存/シグナルを使用/モデルフォームを使用しますか?
これは以前に尋ねられたことに気づきましたが、私がやろうとしていることを実際に扱った質問を見つけることができませんでした. かなり単純だと思いますが、ここで一般の人々が考える最良の形を知りたいです.
以下があるとしましょう。
models.py
保存関数のコメントは、私の質問をほぼ要約しています。これをユーザーにどのように報告しますか? - testfield オブジェクトをどこで検証して、[az] のみが含まれていることを確認しますか? reをインポートして、ここでもそれを行うことはできますか? 私はすべきですか?
ここに全部入れたほうがいいの?pre_save シグナルを送信する必要がありますか? または、検証付きの ModelForm を使用する必要がありますか?
asp.net-mvc - LinqからSQLへのシグナル?
DjangoがLINQtoSQLを使用するのsignals
と同じようなことをする方法を知っている人はいますか?
新しい行が挿入されたときと特定の列が更新されたときを記録しようとしているので、本当に必要なpre_save
のはpost_save
シグナルです。
OnFooIDChanging()
and OnFooIDChanged()
(主キーはここで)のように定義されたパーシャルを使用することで、一部のモデルでそれを行うことができますFooID
が、これは、主キーがIDでないモデル、またはコードによって設定されたモデルでは機能しません。
それらの場合、私はおそらく使用できますOnValidate()
が、それだけでありpre_save
、データベースの処理が困難になります。これOnValidate()
は、から呼び出されるためですDBContext.SubmitChanges()
。もちろんSubmitChanges()
、内部から1秒を呼び出すことはできず、post_save
基本的には不可能です。見ることができます。
django - Django シグナルを一覧表示する方法はありますか?
Django でどのシグナルが設定されているかを確認する方法はありますか?