Index: django/db/models/query.py
===================================================================
--- django/db/models/query.py   (revision 16716)
+++ django/db/models/query.py   (working copy)
@@ -367,13 +367,13 @@
                 lookup[f.name] = lookup.pop(f.attname)
         try:
             self._for_write = True
+            sid = transaction.savepoint(using=self.db)
             return self.get(**lookup), False
         except self.model.DoesNotExist:
             try:
                 params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
                 params.update(defaults)
                 obj = self.model(**params)
-                sid = transaction.savepoint(using=self.db)
                 obj.save(force_insert=True, using=self.db)
                 transaction.savepoint_commit(sid, using=self.db)
                 return obj, True
