request.user возвращает SimpleLazyObject, как его «разбудить»?

У меня есть следующий метод:

def _attempt(actor):
    if actor.__class__ != User:
        raise TypeError

Который вызывается из вида:

self.object.attempt(self.request.user)

Как видите, метод попытки _ожидает, что актор будет иметь тип 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...

======Пост -edit=====

Теперь у меня есть следующий метод:

def _attempt(obj, action, actor, msg): 
    actor.is_authenticated() 
    if isinstance(actor, LazyObject): 
        print type(actor) 

Я передаю пользователя, однако условие ifпо-прежнему верно, а актер по-прежнему LazyObject. Почему это так?

56
задан Stephane Rolland 30 April 2013 в 16:38
поделиться