diff --git a/django/utils/functional.py b/django/utils/functional.py index f674a9bba2..ee301879df 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -75,6 +75,9 @@ def lazy(func, *resultclasses): (func, self.__args, self.__kw) + resultclasses ) + def __repr__(self): + return repr(self.__cast()) + @classmethod def __prepare_class__(cls): for resultclass in resultclasses: diff --git a/tests/utils_tests/test_functional.py b/tests/utils_tests/test_functional.py index 66a6f59cf6..2cf399f892 100644 --- a/tests/utils_tests/test_functional.py +++ b/tests/utils_tests/test_functional.py @@ -130,3 +130,18 @@ class FunctionalTestCase(unittest.TestCase): self.assertEqual(lazy_a(), lazy_b()) self.assertNotEqual(lazy_b(), lazy_c()) + + def test_lazy_repr_text(self): + original_object = 'Lazy translation text' + lazy_obj = lazy(lambda: original_object, six.text_type) + self.assertEquals(repr(original_object), repr(lazy_obj())) + + def test_lazy_repr_int(self): + original_object = 15 + lazy_obj = lazy(lambda: original_object, int) + self.assertEquals(repr(original_object), repr(lazy_obj())) + + def test_lazy_repr_bytes(self): + original_object = b'J\xc3\xbcst a str\xc3\xadng' + lazy_obj = lazy(lambda: original_object, bytes) + self.assertEquals(repr(original_object), repr(lazy_obj()))