summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/db/backends/mysql/operations.py1
-rw-r--r--django/db/backends/oracle/operations.py3
-rw-r--r--tests/db_functions/test_cast.py3
3 files changed, 7 insertions, 0 deletions
diff --git a/django/db/backends/mysql/operations.py b/django/db/backends/mysql/operations.py
index 88e47b95ba..2b85be9c56 100644
--- a/django/db/backends/mysql/operations.py
+++ b/django/db/backends/mysql/operations.py
@@ -18,6 +18,7 @@ class DatabaseOperations(BaseDatabaseOperations):
}
cast_data_types = {
'CharField': 'char(%(max_length)s)',
+ 'TextField': 'char',
'IntegerField': 'signed integer',
'BigIntegerField': 'signed integer',
'SmallIntegerField': 'signed integer',
diff --git a/django/db/backends/oracle/operations.py b/django/db/backends/oracle/operations.py
index 748f606368..d11072bd2c 100644
--- a/django/db/backends/oracle/operations.py
+++ b/django/db/backends/oracle/operations.py
@@ -51,6 +51,9 @@ END;
# Oracle doesn't support string without precision; use the max string size.
cast_char_field_without_max_length = 'NVARCHAR2(2000)'
+ cast_data_types = {
+ 'TextField': cast_char_field_without_max_length,
+ }
def cache_key_culling_sql(self):
return """
diff --git a/tests/db_functions/test_cast.py b/tests/db_functions/test_cast.py
index 12932d95be..d66bec302f 100644
--- a/tests/db_functions/test_cast.py
+++ b/tests/db_functions/test_cast.py
@@ -74,3 +74,6 @@ class CastTests(TestCase):
"""
list(Author.objects.annotate(cast_float=Cast(Avg('age'), models.FloatField())))
self.assertIn('(AVG("db_functions_author"."age"))::double precision', connection.queries[-1]['sql'])
+
+ def test_cast_to_text_field(self):
+ self.assertEqual(Author.objects.values_list(Cast('age', models.TextField()), flat=True).get(), '1')