From 48f3db36d61d828e44ec36905386b59b3b049cd3 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 10 Aug 2016 14:39:26 +0100 Subject: [PATCH] Allow optional max_digits on DecimalField (#4377) --- rest_framework/fields.py | 3 ++- tests/test_fields.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index b4346cd85..3a2f27205 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1016,7 +1016,8 @@ class DecimalField(Field): return value context = decimal.getcontext().copy() - context.prec = self.max_digits + if self.max_digits is not None: + context.prec = self.max_digits return value.quantize( decimal.Decimal('.1') ** self.decimal_places, context=context diff --git a/tests/test_fields.py b/tests/test_fields.py index 60f02777a..1cbff9909 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -876,6 +876,18 @@ class TestMinMaxDecimalField(FieldValues): ) +class TestNoMaxDigitsDecimalField(FieldValues): + field = serializers.DecimalField( + max_value=100, min_value=0, + decimal_places=2, max_digits=None + ) + valid_inputs = { + '10': Decimal('10.00') + } + invalid_inputs = {} + outputs = {} + + class TestNoStringCoercionDecimalField(FieldValues): """ Output values for `DecimalField` with `coerce_to_string=False`.