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:
parent
72a6ac568d
commit
12a96bfa26
|
@ -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):
|
||||||
|
|
Loading…
Reference in New Issue