diff --git a/rest_framework/fields.py b/rest_framework/fields.py index b4346cd858..3a2f272050 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1016,7 +1016,8 @@ def quantize(self, value): 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 60f02777aa..1cbff99093 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`.