Index: django/db/models/manipulators.py
===================================================================
--- django/db/models/manipulators.py	(revision 4248)
+++ django/db/models/manipulators.py	(working copy)
@@ -160,11 +160,15 @@
                     # old to the new, to see which fields have changed.
                     old_rel_obj = None
                     if self.change:
-                        if rel_new_data[related.opts.pk.name][0]:
-                            try:
-                                old_rel_obj = getattr(self.original_object, related.get_accessor_name()).get(**{'%s__exact' % related.opts.pk.name: rel_new_data[related.opts.pk.attname][0]})
-                            except ObjectDoesNotExist:
-                                pass
+                        from django.db.models.fields.related import OneToOneField
+                        if type(related.field)==OneToOneField:
+                            old_rel_obj = getattr(self.original_object, related.get_accessor_name()) 
+                        else:
+                            if rel_new_data[related.opts.pk.name][0]:
+                                try:
+                                    old_rel_obj = getattr(self.original_object, related.get_accessor_name()).get(**{'%s__exact' % related.opts.pk.name: rel_new_data[related.opts.pk.attname][0]})
+                                except ObjectDoesNotExist:
+                                    pass
 
                     for f in related.opts.fields:
                         if f.core and not isinstance(f, FileField) and f.get_manipulator_new_data(rel_new_data, rel=True) in (None, ''):
@@ -203,7 +207,6 @@
                                 if isinstance(f, FileField) and rel_new_data.get(f.name, False):
                                     f.save_file(rel_new_data, new_rel_obj, self.change and old_rel_obj or None, old_rel_obj is not None, rel=True)
 
-                        # Calculate whether any fields have changed.
                         if self.change:
                             if not old_rel_obj: # This object didn't exist before.
                                 self.fields_added.append('%s "%s"' % (related.opts.verbose_name, new_rel_obj))
