1

基本的に、アプリの 1 つで models.py の現在のユーザーにアクセスしようとしています。これを行うべきではない方法と、views.py などでこれを行うべき方法については、既に読みました。 .py は一切使用しません。

それが私がスレッドローカルに目を向けている理由です。これに関する多くの質問を調べましたが、見つかったのはこのデッドリンクだけです: http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser

率直に言って、私は困惑しており、settings.py に追加する必要がある設定や作成する必要があるファイルの詳細など、threadlocals の使用方法に関する情報を誰かが提供してくれることを望んでいました。

4

1 に答える 1

2

コメントに基づいて、Entryモデルに への外部キーがUserある場合、モデルのインスタンスが保存または削除された後、ユーザーに関するすべての情報を取得するために threadlocals を使用する必要はありません。

Signalsサブフレームワークは、探している機能を提供します。たとえばpre_delete、オブジェクトが削除される前に電子メールを送信するために使用できます。post_saveエントリが作成または更新された後に送信できます。

シグナル ハンドラーはシグナルをトリガーしたオブジェクトのインスタンスを受け取り、メールを送信するためのすべてのプロパティを含むユーザー オブジェクトにアクセスできるようになります。User の ID のみがデータベースに保存されますが、Django は ForeignKey フィールドを通じて完全なオブジェクトへのアクセスを提供します。

[編集]

シグナル ハンドラーでオブジェクト インスタンスを取得するには、ハンドラーに渡された kwargs から取得します。

def my_callback(sender, **kwargs):
    instance = kwargs.get('instance')
    # you can now reference instance.user
    # send email code here
于 2013-03-14T19:29:31.117 に答える