mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
Fixed #13844 -- Avoid converting unknown db values to float
This patch removes an unconditional float(value) conversion from db backend default convert_values() method. This can cause problems when aggregating over character fields for example. In addition, Oracle and SQLite already return the bare value from their convert_values(). In the long term the converting should be done by fields, and the fields should then call database backend specific converters when needed. The current setup is inflexible for 3rd party fields. Thanks to Merlijn van Deen for the original patch.
This commit is contained in:
@@ -866,3 +866,15 @@ class AggregationTests(TestCase):
|
||||
['Peter Norvig'],
|
||||
lambda b: b.name
|
||||
)
|
||||
|
||||
def test_type_conversion(self):
|
||||
# The database backend convert_values function should not try to covert
|
||||
# CharFields to float. Refs #13844.
|
||||
from django.db.models import CharField
|
||||
from django.db import connection
|
||||
testData = 'not_a_float_value'
|
||||
testField = CharField()
|
||||
self.assertEqual(
|
||||
connection.ops.convert_values(testData, testField),
|
||||
testData
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user