私は次の方法を持っています:
def _attempt(actor):
if actor.__class__ != User:
raise TypeError
ビューから呼び出されるもの:
self.object.attempt(self.request.user)
ご覧のとおり、_attempt メソッドはアクターが typedjango.contrib.auth.models.User
であることを期待していますが、オブジェクトは type であるように見えますdjango.utils.functional.SimpleLazyObject
。これはなぜですか?LazyObject
さらに重要なことに、 (どうやら User オブジェクトのラッパーのようなものです) をオブジェクトに変換するにはどうすればよいUser
でしょうか?
詳細については、 httpsRequest.user
: //docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.user を参照してください。このドキュメントは、オブジェクトである必要があることを示しているようです...request.user
User
======事後編集=====
私は今次の方法を持っています:
def _attempt(obj, action, actor, msg):
actor.is_authenticated()
if isinstance(actor, LazyObject):
print type(actor)
ユーザーを渡していますが、if
条件はまだ true であり、アクターはまだLazyObject
. これはなぜですか?