Author: russellm
Date: 2007-02-03 18:54:30 -0600 (Sat, 03 Feb 2007)
New Revision: 4459
Modified:
django/trunk/django/db/models/base.py
Log:
Fixed #2160 -- Modified object save logic to check for ``pk is None``, rather
than ``bool(pk) == False``. This allows primary keys to take a value of 0.
Thanks for the report, [EMAIL PROTECTED]
Modified: django/trunk/django/db/models/base.py
===================================================================
--- django/trunk/django/db/models/base.py 2007-02-02 20:37:10 UTC (rev
4458)
+++ django/trunk/django/db/models/base.py 2007-02-04 00:54:30 UTC (rev
4459)
@@ -167,9 +167,8 @@
# First, try an UPDATE. If that doesn't update anything, do an INSERT.
pk_val = self._get_pk_val()
- pk_set = bool(pk_val)
record_exists = True
- if pk_set:
+ if pk_val is not None:
# Determine whether a record with the primary key already exists.
cursor.execute("SELECT 1 FROM %s WHERE %s=%%s LIMIT 1" % \
(backend.quote_name(self._meta.db_table),
backend.quote_name(self._meta.pk.column)), [pk_val])
@@ -184,11 +183,11 @@
db_values + [pk_val])
else:
record_exists = False
- if not pk_set or not record_exists:
+ if pk_val is None or not record_exists:
field_names = [backend.quote_name(f.column) for f in
self._meta.fields if not isinstance(f, AutoField)]
db_values = [f.get_db_prep_save(f.pre_save(self, True)) for f in
self._meta.fields if not isinstance(f, AutoField)]
# If the PK has been manually set, respect that.
- if pk_set:
+ if pk_val is not None:
field_names += [f.column for f in self._meta.fields if
isinstance(f, AutoField)]
db_values += [f.get_db_prep_save(f.pre_save(self, True)) for f
in self._meta.fields if isinstance(f, AutoField)]
placeholders = ['%s'] * len(field_names)
@@ -208,7 +207,7 @@
(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:
+ if self._meta.has_auto_field and pk_val is None:
setattr(self, self._meta.pk.attname,
backend.get_last_insert_id(cursor, self._meta.db_table, self._meta.pk.column))
transaction.commit_unless_managed()
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---