diff --git a/Wrapping/Python/vtkmodules/util/data_model.py b/Wrapping/Python/vtkmodules/util/data_model.py
index 6014b4036bc73e049443a52b7240eb8e8a7ab566..1758b20c6a5f6f01e46b44761f2bf1aa3ef6baa6 100644
--- a/Wrapping/Python/vtkmodules/util/data_model.py
+++ b/Wrapping/Python/vtkmodules/util/data_model.py
@@ -503,3 +503,15 @@ class CompositeDataSetBase(object):
 class vtkPartitionedDataSet(CompositeDataSetBase, vtkPartitionedDataSet):
     def append(self, dataset):
         self.SetPartition(self.GetNumberOfPartitions(), dataset)
+
+# -----------------------------------------------------------------------------
+# Handle pickle registration
+# -----------------------------------------------------------------------------
+with suppress(ImportError):
+    import copyreg
+    from vtkmodules.util.pickle_support import serialize_VTK_data_object
+
+    copyreg.pickle(vtkPolyData, serialize_VTK_data_object)
+    copyreg.pickle(vtkUnstructuredGrid, serialize_VTK_data_object)
+    copyreg.pickle(vtkImageData, serialize_VTK_data_object)
+    copyreg.pickle(vtkPartitionedDataSet, serialize_VTK_data_object)