From 12a96bfa263d514884ef11009913b2f8bb163472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anssi=20K=C3=A4=C3=A4ri=C3=A4inen?= Date: Sun, 16 Dec 2012 22:24:15 +0200 Subject: [PATCH] Fixed #19197 -- fixed convert_values() for nullable numeric fields Cleaned up the implementation of base convert_values() a little, and made sure it accepts None as a value for numeric fields. There are no tests attached. The reason is that not all of the convert_values() accept None as a value for numeric fields (for example sqlite3.convert_values()). The reason the base convert_values() needs to accept None is that this situation might arise in custom compilers for 3rd party backends. It is easy to keep the convert_values() working, so lets do that. --- django/db/backends/__init__.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/django/db/backends/__init__.py b/django/db/backends/__init__.py index 4390b1ec04..5116f50668 100644 --- a/django/db/backends/__init__.py +++ b/django/db/backends/__init__.py @@ -883,16 +883,14 @@ class BaseDatabaseOperations(object): Coerce the value returned by the database backend into a consistent type that is compatible with the field type. """ - internal_type = field.get_internal_type() - if internal_type == 'DecimalField': + if value is None: return value - elif internal_type == 'FloatField': + internal_type = field.get_internal_type() + if internal_type == 'FloatField': return float(value) elif (internal_type and (internal_type.endswith('IntegerField') or internal_type == 'AutoField')): return int(value) - elif internal_type in ('DateField', 'DateTimeField', 'TimeField'): - return value return value def check_aggregate_support(self, aggregate_func):