Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py	(revision 8580)
+++ django/db/models/query.py	(working copy)
@@ -328,7 +328,7 @@
                 params.update(defaults)
                 obj = self.model(**params)
                 sid = transaction.savepoint()
-                obj.save()
+                obj.save(force_insert=True)
                 transaction.savepoint_commit(sid)
                 return obj, True
             except IntegrityError, e:
Index: docs/ref/models/querysets.txt
===================================================================
--- docs/ref/models/querysets.txt	(revision 8580)
+++ docs/ref/models/querysets.txt	(working copy)
@@ -577,7 +577,7 @@
         obj = Person.objects.get(first_name='John', last_name='Lennon')
     except Person.DoesNotExist:
         obj = Person(first_name='John', last_name='Lennon', birthday=date(1940, 10, 9))
-        obj.save()
+        obj.save(force_insert=True)
 
 This pattern gets quite unwieldy as the number of fields in a model goes up.
 The above example can be rewritten using ``get_or_create()`` like so::
@@ -596,7 +596,7 @@
     params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
     params.update(defaults)
     obj = self.model(**params)
-    obj.save()
+    obj.save(force_insert=True)
 
 In English, that means start with any non-``'defaults'`` keyword argument that
 doesn't contain a double underscore (which would indicate a non-exact lookup).
