Index: django/db/models/base.py
===================================================================
--- django/db/models/base.py	(revision 6211)
+++ django/db/models/base.py	(working copy)
@@ -83,6 +83,11 @@
     def _get_pk_val(self):
         return getattr(self, self._meta.pk.attname)
 
+    def _set_pk_val(self, value):
+        return setattr(self, self._meta.pk.attname, value)
+
+    pk = property(_get_pk_val, _set_pk_val)
+
     def __repr__(self):
         return smart_str(u'<%s: %s>' % (self.__class__.__name__, unicode(self)))
 
Index: tests/modeltests/basic/models.py
===================================================================
--- tests/modeltests/basic/models.py	(revision 6211)
+++ tests/modeltests/basic/models.py	(working copy)
@@ -33,6 +33,12 @@
 >>> a.id
 1L
 
+# New in Django development version:
+# Models have a pk attribute that points to the primary key
+# By default this is the id
+>>> a.pk
+1L
+
 # Access database columns via Python attributes.
 >>> a.headline
 'Area man programs in Python'
Index: tests/modeltests/custom_pk/models.py
===================================================================
--- tests/modeltests/custom_pk/models.py	(revision 6211)
+++ tests/modeltests/custom_pk/models.py	(working copy)
@@ -56,6 +56,12 @@
 >>> Employee.objects.filter(pk__in=['ABC123','XYZ456'])
 [<Employee: Fran Bones>, <Employee: Dan Jones>]
 
+# New in Django development version:
+# pk can be accessed like any other attribute
+>>> e = Employee.objects.get(pk='ABC123')
+>>> e.pk
+u'ABC123'
+
 # Fran got married and changed her last name.
 >>> fran = Employee.objects.get(pk='XYZ456')
 >>> fran.last_name = 'Jones'
