summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorScott Fitsimones <iscottonline@gmail.com>2019-04-05 21:40:46 -0700
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-04-19 08:21:29 +0200
commit95811c3de9334c313522982c3d125a8c2ff7ab72 (patch)
treed40279328801156f5555d298766c2a342ceeff2f /django
parentbb54a2daeea5dde2fca0b7feddd94e26ea69b619 (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__.py24
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_