Ticket #2512: django_fix_pkonly_update_#2512.diff
File django_fix_pkonly_update_#2512.diff, 1.5 KB (added by , 18 years ago) |
---|
-
django/db/models/base.py
173 173 # Determine whether a record with the primary key already exists. 174 174 cursor.execute("SELECT 1 FROM %s WHERE %s=%%s LIMIT 1" % \ 175 175 (backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column)), [pk_val]) 176 # If it does already exist , do an UPDATE.176 # If it does already exist and there are non-pk fields, do an UPDATE. 177 177 if cursor.fetchone(): 178 178 db_values = [f.get_db_prep_save(f.pre_save(self, False)) for f in non_pks] 179 cursor.execute("UPDATE %s SET %s WHERE %s=%%s" % \ 180 (backend.quote_name(self._meta.db_table), 181 ','.join(['%s=%%s' % backend.quote_name(f.column) for f in non_pks]), 182 backend.quote_name(self._meta.pk.column)), 183 db_values + [pk_val]) 179 if db_values: 180 cursor.execute("UPDATE %s SET %s WHERE %s=%%s" % \ 181 (backend.quote_name(self._meta.db_table), 182 ','.join(['%s=%%s' % backend.quote_name(f.column) for f in non_pks]), 183 backend.quote_name(self._meta.pk.column)), 184 db_values + [pk_val]) 184 185 else: 185 186 record_exists = False 186 187 if not pk_set or not record_exists: