diff --git a/django/db/models/base.py b/django/db/models/base.py index 657236571d..bdae7eccc2 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -176,11 +176,12 @@ class Model(object): # If it does already exist, do an UPDATE. if cursor.fetchone(): db_values = [f.get_db_prep_save(f.pre_save(self, False)) for f in non_pks] - cursor.execute("UPDATE %s SET %s WHERE %s=%%s" % \ - (backend.quote_name(self._meta.db_table), - ','.join(['%s=%%s' % backend.quote_name(f.column) for f in non_pks]), - backend.quote_name(self._meta.pk.column)), - db_values + [pk_val]) + if db_values: + cursor.execute("UPDATE %s SET %s WHERE %s=%%s" % \ + (backend.quote_name(self._meta.db_table), + ','.join(['%s=%%s' % backend.quote_name(f.column) for f in non_pks]), + backend.quote_name(self._meta.pk.column)), + db_values + [pk_val]) else: record_exists = False if not pk_set or not record_exists: diff --git a/tests/modeltests/empty/models.py b/tests/modeltests/empty/models.py index c50878398d..0f5a0b870f 100644 --- a/tests/modeltests/empty/models.py +++ b/tests/modeltests/empty/models.py @@ -20,5 +20,7 @@ API_TESTS = """ 2 >>> m.id is not None True +>>> existing = Empty(m.id) +>>> existing.save() """