diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-06-01 15:11:42 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-06-01 15:13:10 +0200 |
| commit | 94675a76339f98ed6fa9d07d4e647f8ef33953a0 (patch) | |
| tree | b95d86c177a0e6a8998e14d036bff67ea4dcc239 /tests | |
| parent | b2ff1655fcdb5c7827ab131642991e4195adaf6b (diff) | |
[3.2.x] Fixed #32793 -- Fixed loss of precision for temporal operations with DecimalFields on MySQL.
Regression in 1e38f1191de21b6e96736f58df57dfb851a28c1f.
Thanks Mohsen Tamiz for the report.
Backport of e703b152c6148ddda1b072a4353e9a41dca87f90 from main
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/expressions/models.py | 3 | ||||
| -rw-r--r-- | tests/expressions/tests.py | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/tests/expressions/models.py b/tests/expressions/models.py index 02836e653e..bd6be81c5f 100644 --- a/tests/expressions/models.py +++ b/tests/expressions/models.py @@ -48,9 +48,10 @@ class Company(models.Model): class Number(models.Model): integer = models.BigIntegerField(db_column='the_integer') float = models.FloatField(null=True, db_column='the_float') + decimal_value = models.DecimalField(max_digits=20, decimal_places=17, null=True) def __str__(self): - return '%i, %.3f' % (self.integer, self.float) + return '%i, %.3f, %.17f' % (self.integer, self.float, self.decimal_value) class Experiment(models.Model): diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index bea7633a49..728c4051c5 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -1176,6 +1176,13 @@ class ExpressionsNumericTests(TestCase): self.assertEqual(Number.objects.get(pk=n.pk).integer, 10) self.assertEqual(Number.objects.get(pk=n.pk).float, Approximate(256.900, places=3)) + def test_decimal_expression(self): + n = Number.objects.create(integer=1, decimal_value=Decimal('0.5')) + n.decimal_value = F('decimal_value') - Decimal('0.4') + n.save() + n.refresh_from_db() + self.assertEqual(n.decimal_value, Decimal('0.1')) + class ExpressionOperatorTests(TestCase): @classmethod |
