我有以下方法:
def _attempt(actor):
if actor.__class__ != User:
raise TypeError
从视图中调用:
self.object.attempt(self.request.user)
如您所见, _attempt 方法期望 actor 是 type django.contrib.auth.models.User
,但对象似乎是 type django.utils.functional.SimpleLazyObject
。为什么会这样?更重要的是,如何将LazyObject
(显然是用户对象的一种包装器)转换为User
对象?
更多信息Request.user
可在此处获得:https ://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,actor 仍然是LazyObject
. 为什么会这样?