diff --git a/django/utils/functional.py b/django/utils/functional.py
index e52ab76..05d5cb6 100644
--- a/django/utils/functional.py
+++ b/django/utils/functional.py
@@ -234,6 +234,22 @@ def lazy(func, *resultclasses):
             memo[id(self)] = self
             return self
 
+        def __getstate__(self):
+            import pickle, sys
+            thismodule = sys.modules[__name__]
+            setattr(thismodule, '__proxy__', self.__class__)
+            return {'func': pickle.dumps(self.__func),
+                    'args': pickle.dumps(self.__args),
+                    'kw': pickle.dumps(self.__kw),}
+
+        def __setstate__(self, state):
+            import pickle, sys
+            thismodule = sys.modules[__name__]
+            setattr(thismodule, '__proxy__', self.__class__)
+            self.__func = pickle.loads(state['func'])
+            self.__args = pickle.loads(state['args'])
+            self.__kw = pickle.loads(state['kw'])
+
     def __wrapper__(*args, **kw):
         # Creates the proxy object, instead of the actual value.
         return __proxy__(args, kw)
