Loading django/db/backends/base/operations.py +1 −1 Original line number Diff line number Diff line Loading @@ -486,7 +486,7 @@ class BaseDatabaseOperations(object): raise ValueError("Django does not support timezone-aware times.") return six.text_type(value) def adapt_decimalfield_value(self, value, max_digits, decimal_places): def adapt_decimalfield_value(self, value, max_digits=None, decimal_places=None): """ Transforms a decimal.Decimal value to an object compatible with what is expected by the backend driver for decimal (numeric) columns. Loading docs/releases/1.9.3.txt +3 −0 Original line number Diff line number Diff line Loading @@ -31,3 +31,6 @@ Bugfixes * Fixed :class:`~django.contrib.postgres.fields.RangeField` and :class:`~django.contrib.postgres.fields.ArrayField` serialization with ``None`` values (:ticket:`26215`). * Fixed a crash when filtering by a ``Decimal`` in ``RawQuery`` (:ticket:`26219`). tests/raw_query/models.py +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ class BookFkAsPk(models.Model): class Coffee(models.Model): brand = models.CharField(max_length=255, db_column="name") price = models.DecimalField(max_digits=10, decimal_places=2, default=0) class Reviewer(models.Model): Loading tests/raw_query/tests.py +6 −0 Original line number Diff line number Diff line from __future__ import unicode_literals from datetime import date from decimal import Decimal from django.db.models.query_utils import InvalidQuery from django.test import TestCase, skipUnlessDBFeature Loading Loading @@ -307,3 +308,8 @@ class RawQueryTests(TestCase): """ b = BookFkAsPk.objects.create(book=self.b1) self.assertEqual(list(BookFkAsPk.objects.raw('SELECT not_the_default FROM raw_query_bookfkaspk')), [b]) def test_decimal_parameter(self): c = Coffee.objects.create(brand='starbucks', price=20.5) qs = Coffee.objects.raw("SELECT * FROM raw_query_coffee WHERE price >= %s", params=[Decimal(20)]) self.assertEqual(list(qs), [c]) Loading
django/db/backends/base/operations.py +1 −1 Original line number Diff line number Diff line Loading @@ -486,7 +486,7 @@ class BaseDatabaseOperations(object): raise ValueError("Django does not support timezone-aware times.") return six.text_type(value) def adapt_decimalfield_value(self, value, max_digits, decimal_places): def adapt_decimalfield_value(self, value, max_digits=None, decimal_places=None): """ Transforms a decimal.Decimal value to an object compatible with what is expected by the backend driver for decimal (numeric) columns. Loading
docs/releases/1.9.3.txt +3 −0 Original line number Diff line number Diff line Loading @@ -31,3 +31,6 @@ Bugfixes * Fixed :class:`~django.contrib.postgres.fields.RangeField` and :class:`~django.contrib.postgres.fields.ArrayField` serialization with ``None`` values (:ticket:`26215`). * Fixed a crash when filtering by a ``Decimal`` in ``RawQuery`` (:ticket:`26219`).
tests/raw_query/models.py +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ class BookFkAsPk(models.Model): class Coffee(models.Model): brand = models.CharField(max_length=255, db_column="name") price = models.DecimalField(max_digits=10, decimal_places=2, default=0) class Reviewer(models.Model): Loading
tests/raw_query/tests.py +6 −0 Original line number Diff line number Diff line from __future__ import unicode_literals from datetime import date from decimal import Decimal from django.db.models.query_utils import InvalidQuery from django.test import TestCase, skipUnlessDBFeature Loading Loading @@ -307,3 +308,8 @@ class RawQueryTests(TestCase): """ b = BookFkAsPk.objects.create(book=self.b1) self.assertEqual(list(BookFkAsPk.objects.raw('SELECT not_the_default FROM raw_query_bookfkaspk')), [b]) def test_decimal_parameter(self): c = Coffee.objects.create(brand='starbucks', price=20.5) qs = Coffee.objects.raw("SELECT * FROM raw_query_coffee WHERE price >= %s", params=[Decimal(20)]) self.assertEqual(list(qs), [c])