最佳答案
我有以下方法:
def _attempt(actor):
if actor.__class__ != User:
raise TypeError
从一个角度来说:
self.object.attempt(self.request.user)
正如您所看到的,_ try 方法期望 Actor 是 django.contrib.auth.models.User
类型,但是对象似乎是 django.utils.functional.SimpleLazyObject
类型。为什么会这样?更重要的是,如何将 LazyObject
(显然是 User 对象的一种包装器)转换为 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
条件仍然为真,Actor 仍然是 LazyObject
。为什么会这样?