Index: third-party/Django-1.0.2-final+4102.3+2705/django/db/models/base.py =================================================================== --- third-party/Django-1.0.2-final+4102.3+2705/django/db/models/base.py (revision 3362) +++ third-party/Django-1.0.2-final+4102.3+2705/django/db/models/base.py (working copy) @@ -358,7 +358,10 @@ non_pks = [f for f in meta.local_fields if not f.primary_key] modified_attrs = self._modified_attrs non_pks = [f for f in non_pks if (f.name in modified_attrs or f.attname in modified_attrs)] - self._reset_modified_attrs() + + # Reset modified attribute accumulator after parent fields have been updated + if cls == self.__class__: + self._reset_modified_attrs() # First, try an UPDATE. If that doesn't update anything, do an INSERT. pk_val = self._get_pk_val(meta)