diff --git a/django/forms/models.py b/django/forms/models.py
index 5fcf959..c5afc08 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -431,7 +431,14 @@ class BaseModelFormSet(BaseFormSet):
 
     def _existing_object(self, pk):
         if not hasattr(self, '_object_dict'):
-            self._object_dict = dict([(o.pk, o) for o in self.get_queryset()])
+            from django.db import connections
+            self._object_dict = {}
+            dct = self._object_dict
+            for o in self.get_queryset():
+                d_key = self.model._meta.pk.get_db_prep_lookup('exact', o.pk, connection=connections[self.get_queryset().db])
+                if isinstance(d_key, list):
+                    d_key = d_key[0]
+                dct[d_key] = o
         return self._object_dict.get(pk)
 
     def _construct_form(self, i, **kwargs):
