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.
This commit is contained in:
Anssi Kääriäinen 2012-12-16 22:24:15 +02:00
parent 72a6ac568d
commit 12a96bfa26
1 changed files with 3 additions and 5 deletions

View File

@ -883,16 +883,14 @@ class BaseDatabaseOperations(object):
Coerce the value returned by the database backend into a consistent type Coerce the value returned by the database backend into a consistent type
that is compatible with the field type. that is compatible with the field type.
""" """
internal_type = field.get_internal_type() if value is None:
if internal_type == 'DecimalField':
return value return value
elif internal_type == 'FloatField': internal_type = field.get_internal_type()
if internal_type == 'FloatField':
return float(value) return float(value)
elif (internal_type and (internal_type.endswith('IntegerField') elif (internal_type and (internal_type.endswith('IntegerField')
or internal_type == 'AutoField')): or internal_type == 'AutoField')):
return int(value) return int(value)
elif internal_type in ('DateField', 'DateTimeField', 'TimeField'):
return value
return value return value
def check_aggregate_support(self, aggregate_func): def check_aggregate_support(self, aggregate_func):