diff -ur django-1.0/Django-1.0/django/db/models/base.py django-1.0.patched/Django-1.0/django/db/models/base.py
--- django-1.0/Django-1.0/django/db/models/base.py	2008-09-03 20:38:43.000000000 +0200
+++ django-1.0.patched/Django-1.0/django/db/models/base.py	2008-11-08 22:10:15.000000000 +0100
@@ -11,7 +11,7 @@
 import django.db.models.manager     # Imported to register signal handler.
 from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned, FieldError
 from django.db.models.fields import AutoField
-from django.db.models.fields.related import OneToOneRel, ManyToOneRel, OneToOneField
+from django.db.models.fields.related import RelatedField, OneToOneRel, ManyToOneRel, OneToOneField
 from django.db.models.query import delete_objects, Q, CollectedObjects
 from django.db.models.options import Options
 from django.db import connection, transaction, DatabaseError
@@ -340,6 +340,10 @@
 
                 self.save_base(raw, parent)
                 setattr(self, field.attname, self._get_pk_val(parent._meta))
+            for field in meta.local_fields:
+                if isinstance(field, RelatedField):
+                    if getattr(self, field.attname) is None and getattr(self, field.name) is not None:
+                        setattr(self, field.attname, getattr(self, field.name).pk)
 
         non_pks = [f for f in meta.local_fields if not f.primary_key]
 
diff -ur django-1.0/Django-1.0/tests/modeltests/m2m_and_m2o/models.py django-1.0.patched/Django-1.0/tests/modeltests/m2m_and_m2o/models.py
--- django-1.0/Django-1.0/tests/modeltests/m2m_and_m2o/models.py	2007-08-12 14:49:01.000000000 +0200
+++ django-1.0.patched/Django-1.0/tests/modeltests/m2m_and_m2o/models.py	2008-11-08 22:09:43.000000000 +0100
@@ -43,6 +43,11 @@
 >>> i3.save()
 >>> i3.cc.add(r)
 
+>>> f = User(username='fred')
+>>> i4 = Issue(num=4, client=f)
+>>> f.save()
+>>> i4.save()
+
 >>> from django.db.models.query import Q
 
 >>> Issue.objects.filter(client=r.id)
