diff --git a/django/db/models/base.py b/django/db/models/base.py index 21609afb7e4..787dcd026e0 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -187,14 +187,14 @@ class Model(object): cursor.execute("INSERT INTO %s (%s) VALUES (%s)" % \ (backend.quote_name(self._meta.db_table), ','.join(field_names), ','.join(placeholders)), db_values) - if self._meta.has_auto_field and not pk_set: - setattr(self, self._meta.pk.attname, backend.get_last_insert_id(cursor, self._meta.db_table, self._meta.pk.column)) else: # Create a new record with defaults for everything. cursor.execute("INSERT INTO %s (%s) VALUES (%s)" % (backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column), backend.get_pk_default_value())) + if self._meta.has_auto_field and not pk_set: + setattr(self, self._meta.pk.attname, backend.get_last_insert_id(cursor, self._meta.db_table, self._meta.pk.column)) transaction.commit_unless_managed() # Run any post-save hooks. diff --git a/tests/modeltests/empty/models.py b/tests/modeltests/empty/models.py index 3befbd55a5f..c50878398db 100644 --- a/tests/modeltests/empty/models.py +++ b/tests/modeltests/empty/models.py @@ -12,10 +12,13 @@ class Empty(models.Model): API_TESTS = """ >>> m = Empty() +>>> m.id >>> m.save() >>> m2 = Empty() >>> m2.save() >>> len(Empty.objects.all()) 2 +>>> m.id is not None +True """