ユーザーがログインするときにDB行を書き込む必要があります。次のコードはmodels.pyにあります(ファイルの最後、モデル定義の後)。
models.py
from django.contrib.auth.signals import user_logged_in
from utils import *
def rec_login(sender, request, user, **kwargs):
u_audit('some text here', user)
user_logged_in.connect(rec_login)
modules.pyにインポートされるユーティリティモジュールがあります。次のコードは、上記の関数からutils.pyで呼び出されます。
utils.py
from app.models import *
def u_audit(msg,u):
ua=UserLog(action=msg, user=u, actiontime=datetime.now())
ua.save()
他のいくつかの場所(ログイン後)でu_audit()関数を再利用しています。
ユーザーがログインすると、UserLogオブジェクトのNameErrorが発生します(つまり、シグナルコールバック関数でモデル定義にアクセスできないようです)。
上記で参照されているUserLogオブジェクトは、単純なmodels.Modelです。
誰かが私が欠けているものを知っていますか?
私はmodels.pyのコールバック関数に単純なファイル書き込みを入れてみましたが、u_audit()関数でも同じことを試しました。代わりに、それは正常に機能するので、適切に呼び出されていることがわかります。他のシグナルコールバック関数が登録されており(すべてログイン後)、モデルを使用していて正常に機能しています。