Skip to content

Commit 8cf3744

Browse files
committed
Ensure no invalid min_length/min_value/max_value arguments. Closes #2369.
1 parent f8e310f commit 8cf3744

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

rest_framework/utils/field_mapping.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
import inspect
1111

1212

13+
NUMERIC_FIELD_TYPES = (
14+
models.IntegerField, models.FloatField, models.DecimalField
15+
)
16+
17+
1318
class ClassLookupDict(object):
1419
"""
1520
Takes a dictionary with classes as keys.
@@ -119,7 +124,7 @@ def get_field_kwargs(field_name, model_field):
119124
validator.limit_value for validator in validator_kwarg
120125
if isinstance(validator, validators.MinLengthValidator)
121126
), None)
122-
if min_length is not None:
127+
if min_length is not None and isinstance(model_field, models.CharField):
123128
kwargs['min_length'] = min_length
124129
validator_kwarg = [
125130
validator for validator in validator_kwarg
@@ -132,7 +137,7 @@ def get_field_kwargs(field_name, model_field):
132137
validator.limit_value for validator in validator_kwarg
133138
if isinstance(validator, validators.MaxValueValidator)
134139
), None)
135-
if max_value is not None:
140+
if max_value is not None and isinstance(model_field, NUMERIC_FIELD_TYPES):
136141
kwargs['max_value'] = max_value
137142
validator_kwarg = [
138143
validator for validator in validator_kwarg
@@ -145,7 +150,7 @@ def get_field_kwargs(field_name, model_field):
145150
validator.limit_value for validator in validator_kwarg
146151
if isinstance(validator, validators.MinValueValidator)
147152
), None)
148-
if min_value is not None:
153+
if min_value is not None and isinstance(model_field, NUMERIC_FIELD_TYPES):
149154
kwargs['min_value'] = min_value
150155
validator_kwarg = [
151156
validator for validator in validator_kwarg

0 commit comments

Comments
 (0)