最佳答案
我有以下方法:
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。为什么会这样?