問題タブ [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のシグナル処理がデフォルトでコールバックに弱い参照を使用するのはなぜですか?
Djangoのドキュメントでは、この件について次のように述べています。
また、Djangoはデフォルトでシグナルハンドラーを弱参照として保存するため、ハンドラーがローカル関数の場合、ガベージコレクションされる可能性があることにも注意してください。これを防ぐには、シグナルのconnect()を呼び出すときにweak=Falseを渡します。
これがデフォルトである理由の正当性を見つけることができませんでした。また、明示的に登録したシグナルを暗黙的に非表示にする必要がある理由がわかりません。では、ここでの弱参照のユースケースは何ですか?そして、なぜそれがデフォルトなのですか?
どちらの場合も99%は問題ないのではないかと思いますが、ここでわからないことがあるので、いつか噛み付くような「落とし穴」が潜んでいないか知りたいです。
python - django1.1 テストサーバーに複数回登録されたシグナル
models.py ファイルでシグナル ハンドラー関数を定義しました。そのファイルの下部で、http://docs.djangoproject.com/en/dev/topics/signals/signals.post_save.connect(myhandler, sender=myclass)
のドキュメントで推奨されているように使用します。
ただし、テスト サーバーを実行すると、単純な print-statement デバッグで models.py ファイルが 2 回インポートされ、(私が知る限り)、シグナル ハンドラーが 2 回登録されることがわかります。これは、すべてのアクションが 2 回処理されることを意味し、これは明らかに意図した動作ではありません。
最初のインポートはモデルのチェック段階で発生するようで、2 番目のインポートは、サーバーによって処理される最初のリクエストでモデル自体が必要になったときに発生します。
シグナルハンドラを別の場所に登録する必要がありますか? これは 1.1 テスト サーバーのバグですか? 他に何か不足していますか?
python - Django post_save シグナルが pre_save データを提供するのはなぜですか?
「情報」オブジェクトを多くの「顧客」に接続しようとしています(以下のコードを参照)
1 つの情報オブジェクトが更新されたら、その情報に接続されている各顧客に電子メールを送信したいと考えています。
ただし、信号が受信したsold_toフィールドをログに記録すると、保存前のデータが常に取得されます。
これは、その ManyToManyField とデータが別のテーブルに格納されているためだと思いますが、すべてのリレーションが更新された後に post_save シグナルを呼び出すべきではありませんか?
誰かが解決策の提案を受けましたか?
Edit: apollo13 in #django alerted me to this: "Related items (the things being saved into the many-to-many relation) are not saved as part of a model's save method, as you have discovered." - http://groups.google.com/group/django-users/msg/2b734c153537f970
But since its from Jul 9 2006 I really really hope there is a solution for this.
django - django.dispatch.dispatcherをDjango0.96から1.0.2に移行する
Django 1.0で次の(Django 0.96)ディスパッチャーフックをどのように実行しますか?
ちなみに、このコードは、GAEでのDjangoの使用に関するGoogleの記事からのものです。残念ながら、Djangoのディスパッチコードは0.96から1.0の間で書き直されており、Googleの例はDjango1.0では機能しません。
もちろん、Djangoの人々は、この移行を正確に行う方法について役立つガイドを提供しましたが、現時点ではそれを理解するのに十分な熱意はありません。:o)
読んでくれてありがとう。
ブライアン
django - 404を上げて、URLチェーンを続行します
私はこのようなURLパターンを持っています:
filtered-list
とtitle
同じものに一致します。
に一致するものの利用可能なリストがある場合tag
、私は発砲しfiltered-list
たいと思います。list_titles
しかし、一致するものがない場合はtag
、それをURLプロセッサにバブルバックしたいので、show_title
起動します。
一致するタイトルがない場合は、そこで適切な404を発生させます。
ビューの内側からこれを実行できることはわかっていますが、プロセスをビューに配線する必要があるのは少し臭いです。URLの順序で、最初に何が選択され、何に渡されるかを決定したいと思います。
django - オブジェクトの保存後に関連オブジェクトを使用しますか?
モデル インスタンスが保存、更新、または削除されるたびに、xml フラグメント (atom イベント) をオフロードしたい状況があります。フラグメントには、関連オブジェクトに関する情報を含める必要があります。
オブジェクトを保存した後、関連オブジェクトからの情報を使用できるイベントが見つかりません。関連オブジェクトが保存される前にpost_save
シグナルがトリガーされたようです。
現在、ModelAdmin のsave_model メソッドをオーバーライドして、インスタンスとその関連オブジェクトに関する詳細を含む完全なアトム エントリを出力しています。ただし、これは、インスタンスが管理インターフェースを介して管理されている場合にのみ機能し、インスタンスがプログラムによって更新された場合には機能しません。
post_save_of_everything
信号に似たものを作成できた人はいますか?
django - Django 信号は 1 回送信され、2 回受信されました -- なぜですか?
私は Django シグナルを扱っていますが、1 回送信されたとしても 2 回受信されるようです。これが私が取り組んでいるコードです(DjangoでUploadifyを使用するための単純なラッパーです)...
(信号のスペルが間違っていることに気付きました)
そこに印刷ステートメントがあることに気付いたと思います。コンソールでは、次のように表示されます。
(また、信号が発生した後に Django がページ POST を報告するのはなぜですか?)
python - Django:管理者に表示する前にテキストフィールドを変更する方法
テキストフィールドのあるDjangoモデルがあります。Django Adminでユーザーに表示される前に、テキストフィールドの内容を変更したいと思います。
post_loadと同等の信号が表示されることを期待していましたが、存在しないようです。
具体的には:
ユーザー入力を受け取るテキストフィールドがあります。このテキストフィールドには、続きを読むセパレータがあります。区切り文字の前のテキストはイントロテキストフィールドに入り、後のテキストはすべてフルテキストフィールドに入ります。
同時に、ユーザーが記事を編集しているときに、ユーザー1のテキストフィールドのみを表示したいと思います。
私の計画は、on_loadでイントロテキストとフルテキストフィールドからデータを読み取り、それらをフルテキストテキストエリアに結合することでした。pre_saveで、read moreセパレーターを使用してテキストを分割し、イントロをイントロテキストに、残りをフルテキストに格納します。
したがって、フォームが表示される前に、全文フィールドに次のように入力する必要があります
そして、私は既存のアイテムに対してこれを行うことができる必要があります。
django - Django: queryset.update のシグナル
メソッドを使用している場合、Django は pre/post_delete シグナルを送信していますが、queryset.delete()
pre/post_save on も送信すべきではありませんqueryset.update()
か?
django - 保存直後に ManyToMany リレーションシップが更新されない問題
post_save
モデルを (管理者経由で) 保存したときに更新されない多対多の関係に問題があり、信号に添付された関数内またはsave_model
関連付けられた 内で新しい値を使用しようとしましたAdminModel
。get 関数と id.. を使用して、これらの関数内でオブジェクトをリロードしようとしましたが、まだ古い値が残っています。
これはトランザクションの問題ですか?トランザクションが終了したときにシグナルがスローされますか?
ありがとう、