diff options
| author | Scott Fitsimones <iscottonline@gmail.com> | 2019-04-05 21:40:46 -0700 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-04-19 08:21:29 +0200 |
| commit | 95811c3de9334c313522982c3d125a8c2ff7ab72 (patch) | |
| tree | d40279328801156f5555d298766c2a342ceeff2f /django | |
| parent | bb54a2daeea5dde2fca0b7feddd94e26ea69b619 (diff) | |
[2.2.x] Fixed #30328 -- Fixed crash of IntegerField.validators when limit_value in a custom validator is callable.
Backport of a14c0fda15db7e0eb982ac7b68d47b45fc95b4cb from master
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/fields/__init__.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index d0a1324c79..324bb0bf75 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -1790,13 +1790,25 @@ class IntegerField(Field): validators_ = super().validators internal_type = self.get_internal_type() min_value, max_value = connection.ops.integer_field_range(internal_type) - if (min_value is not None and not - any(isinstance(validator, validators.MinValueValidator) and - validator.limit_value >= min_value for validator in validators_)): + if min_value is not None and not any( + ( + isinstance(validator, validators.MinValueValidator) and ( + validator.limit_value() + if callable(validator.limit_value) + else validator.limit_value + ) >= min_value + ) for validator in validators_ + ): validators_.append(validators.MinValueValidator(min_value)) - if (max_value is not None and not - any(isinstance(validator, validators.MaxValueValidator) and - validator.limit_value <= max_value for validator in validators_)): + if max_value is not None and not any( + ( + isinstance(validator, validators.MaxValueValidator) and ( + validator.limit_value() + if callable(validator.limit_value) + else validator.limit_value + ) <= max_value + ) for validator in validators_ + ): validators_.append(validators.MaxValueValidator(max_value)) return validators_ |
