summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2021-03-28 13:06:29 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-03-29 06:22:36 +0200
commited0cc52dc3b0dfebba8a38c12b6157a007309900 (patch)
treece1eea3693fce4e841baedc1382c081fbcce6c83
parentdcb06c2c6889d04506b48f025622357e2926c709 (diff)
Fixed #32585 -- Fixed Value() crash with DecimalField on SQLite.
-rw-r--r--django/db/models/expressions.py2
-rw-r--r--tests/expressions/tests.py5
2 files changed, 6 insertions, 1 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py
index e5291ab8d3..bdd23617ac 100644
--- a/django/db/models/expressions.py
+++ b/django/db/models/expressions.py
@@ -707,7 +707,7 @@ class Func(SQLiteNumericMixin, Expression):
return copy
-class Value(Expression):
+class Value(SQLiteNumericMixin, Expression):
"""Represent a wrapped value as a node within an expression."""
# Provide a default value for `for_save` in order to allow unresolved
# instances to be compiled until a decision is taken in #25425.
diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py
index eb1bfdc2be..9b88c94d7b 100644
--- a/tests/expressions/tests.py
+++ b/tests/expressions/tests.py
@@ -1757,6 +1757,11 @@ class ValueTests(TestCase):
value = Value('foo', output_field=CharField())
self.assertEqual(value.as_sql(compiler, connection), ('%s', ['foo']))
+ def test_output_field_decimalfield(self):
+ Time.objects.create()
+ time = Time.objects.annotate(one=Value(1, output_field=DecimalField())).first()
+ self.assertEqual(time.one, 1)
+
def test_resolve_output_field(self):
value_types = [
('str', CharField),