diff --git a/django/utils/functional.py b/django/utils/functional.py index 0c31c1f375..8127ad8407 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -32,6 +32,8 @@ def lazy(func, *resultclasses): self.__dispatch[resultclass] = {} for (k, v) in resultclass.__dict__.items(): setattr(self, k, self.__promise__(resultclass, k, v)) + if unicode in resultclasses: + setattr(self, '__unicode__', self.__unicode_cast) def __promise__(self, klass, funcname, func): # Builds a wrapper around some magic method and registers that magic @@ -47,6 +49,9 @@ def lazy(func, *resultclasses): self.__dispatch[klass][funcname] = func return __wrapper__ + def __unicode_cast(self): + return self.__func(*self.__args, **self.__kw) + def __wrapper__(*args, **kw): # Creates the proxy object, instead of the actual value. return __proxy__(args, kw)