問題タブ [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.

0 投票する
4 に答える
10247 参照

python - フィクスチャがdjangopost_saveシグナルコードと競合しないようにするにはどうすればよいですか?

私のアプリケーションでは、新しいユーザーがサインアップしたときに特定のテーブルにエントリを作成したいと思います。たとえば、会社やその他のレコードを参照するユーザープロファイルを作成したいと思います。post_saveシグナルでこれを実装しました:

これは実行時にうまく機能します。adminを使用して新しいユーザーを作成でき、他の3つのテーブルも適切なエントリを取得します。(つまり、user.first_nameとuser.last_name以降の従業員は、保存時に管理者のフォームに入力されません。なぜそのように行われるのかはまだわかりません)

テストスイートを実行したときに問題が発生しました。この前に、テーブルにこれらのエントリを作成するための一連のフィクスチャを作成していました。ここで、次のようなエラーが発生します。

これは、IDが「1」のフィクスチャに会社、従業員、およびプロファイルレコードをすでに作成していて、post_saveシグナルがそれを再作成しようとしているためだと思います。

私の質問は次のとおりです。フィクスチャを実行しているときにこのpost_saveシグナルを無効にできますか?テストスイートの一部として実行していて、これらのレコードを作成していないことを検出できますか?これらのレコードをフィクスチャから今すぐ削除する必要がありますか(信号はデフォルトを設定するだけで、テストしたい値は設定しません)?フィクスチャのロードコードが作成されたレコードを上書きしないのはなぜですか?

人々はこれをどのように行うのですか?

0 投票する
4 に答える
19517 参照

sql - ジャンゴシグナルとトリガー?

django シグナル ( http://docs.djangoproject.com/en/dev/topics/signals/ ) について読みましたが、私が理解している限り、シグナルは文字通りの SQL トリガーに変換されることはありません ( http://en.wikipedia. org/wiki/Database_trigger )。

シグナルとトリガーが異なるというのが正しければ、どちらが優れていて、どのような点で優れているのでしょうか? ベストプラクティスは何ですか?

...................................

必要な場合の具体的な例を次に示します。

その人の場所がそのチームの場所のセット内にある場合にのみ、その人がチームに参加できるようにしたいと考えています。通常のリレーショナル制約でそれを行う方法がわからないため、私が知る限り、トリガーまたはシグナルを使用することを余儀なくされています。私の直感は、トリガーを使用する必要があると言っていますが、ベストプラクティスを知りたいです。

0 投票する
4 に答える
883 参照

django - syncdb で Django コードを実行しない方法

Django アプリの 1 つの「models.py」にあるサーバー起動コードがいくつかあります。サーバーの起動時にそのコードを実行する必要があります。

問題は、コードが SQL クエリを発行し、実行できないことですsyncdb(psycopg2トランザクションが中断され、テーブルが作成されません)。

コードをミドルウェアに入れて上げるのdjango.core.exceptions.MiddlewareNotUsedは最適ではありません.Djangoシェルでも効果が欲しいからです(また、初期化コードをミドルウェアに入れるのは正しく聞こえません.)それをする最初の要求。最初の顧客が私の Web サイトを訪れたときではなく、サーバーの起動時にコードを実行したいと考えています。

サーバーの起動シグナルは Django ではまだ実装されていないため、これはオプションではありません。

したがって、私は何とかしたいと思います:

  • Django が syncdb を実行しているかどうかを確認するため、クエリは実行しません。
  • または、代わりに、対応するテーブルがあることを確認し、そうでない場合も、クエリを実行しないでください

上記の 2 つのオプションのいずれも、どのドキュメントにも見つかりませんでした。それ、どうやったら出来るの?または、私がやりたいことを行うためのより良い(つまり、正気の)方法はありますか?

0 投票する
2 に答える
500 参照

django - ペイパル Web サイト プロ (wpp) 信号の問題に対する django-paypal のセットアップ

私は django-paypal の dcramer のフォークを使用しており、現在までセットアップに成功しています。「paypal.pro.signals.payment_was_successful」を作成したリスナーに接続しようとしましたが、シグナルが複数回送信され、アプリケーションでエラーが発生しています。「dispatch_uid」を接続ステートメントに追加しようとしましたが、それでも複数回送信されます...何が間違っていますか? この信号を使用する必要がありますか?

0 投票する
3 に答える
2265 参照

django - コメント送信に関するDjango通知

私はDjangoのcontrib.commentsを利用しており、次のことを知りたいです。

コメントがアイテムに投稿されたときに通知を送信するアプリにプラグインできるユーティリティやアプリはありますか?

私はあまりシグナルを扱ったことがないので、少し説明してください。

これが私が思いついたものです。

0 投票する
1 に答える
585 参照

django - Django 通知 コメント 所有者を取得

投稿されたコメントの content_type を所有するユーザーへのアクセスを検討しています

現在、コメントを投稿しているユーザーにはアクセスできますが、アイテムの所有者に通知したいのですが...

やってみuser = comment.content_type.userましたがエラーになります。

私のメイン__init__.pyファイルで

それを変更するとすぐにuser = request.user正常に動作しますが、コメントを作成した人に通知が送信されます。

0 投票する
1 に答える
3419 参照

django - セロリのDjangoシグナル

Celerybeat インスタンスで実行するタスクがあります。そのタスクが実行されると、post/pre_save シグナルを発するはずのモデル オブジェクトが変更されることがありますが、そうではありません。信号が発生していません。これは、セロリが別のユニバースの別のスレッドの別のサーバーで実行している間に Django の信号が同期しているためだと思います。セロリで実行されている間にこれらの信号を発火させる簡単な方法はありますか?

0 投票する
1 に答える
2090 参照

django - djangopost_saveシグナルは古いインラインフォームセットを送信します

次のことを考慮してください。

誰かが注文フォームを作成または変更するたびに、注文フォームの詳細を記載したメールを送信したいと思います。

これまでのところロケット科学はありません..post_save信号を使用してみましょう。

ただし、小さな問題が1つあります。それは、email_notifyに渡されたOrderFormオブジェクトが期待どおりに新しいデータで更新されますが、関連するOrderFormLineアイテムでは更新されないことです。

管理者とモデルのsaveメソッドをオーバーライドしようとしましたが、通知ハンドラーに渡す前に、オブジェクト、フォーム、およびその関係を保存しようとしましたが、何も機能しません。

post_saveシグナルをOrderItemモデルに添付できることは承知していますが、その後、アイテムごとにメールが送信されます。

私が狂気の瀬戸際にいるのを手伝ってください。

更新

シンプルで信頼できるソリューションを見つけました

ショートストーリー:

0 投票する
2 に答える
12394 参照

python - Django: リクエスト オブジェクトにアクセスせずに絶対 URL を取得する

以下のようなモデルがあります。インスタンスが作成されたら、関係者に電子メールを送信したい:

ただし、reverse呼び出しは URL のパス部分のみを返します。例: /stops/9/status/. のような完全な URL が必要ですhttp://example.com/stops/9/status/。現在の Web サイトのホスト名とポート (ポート 80 を使用しないテスト インスタンスの場合) を取得するにはどうすればよいですか?

settings.py私の最初の考えは、必要に応じてアクセスできるように、変数を介してこれを利用できるようにすることでした。ただし、誰かがより強力な提案をするかもしれないと考えました。

0 投票する
1 に答える
2889 参照

django - 管理サイト経由で Django CharField が変更されたときに電子メール通知を送信する

通常は空の CharField があります。mail_managersフィールドが空でない値に設定されている場合、すべてのマネージャー (を使用) に電子メール通知を送信したいと考えています。このフィールドへの変更は、管理サイト経由でのみ行う必要があります。

これはシグナルを介して実行できる可能性があると思いましたが、ドキュメントに適切なシグナルがリストされていません。何か案は?