summaryrefslogtreecommitdiff
path: root/django/db/models/fields
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2014-03-03 20:12:42 -0500
committerSimon Charette <charette.s@gmail.com>2014-03-25 14:31:54 -0400
commit78211b13a51f2ada1c7beb81ff97ef11f9e239eb (patch)
tree2bd0dd1116c06a3705f423d278ee8bf723128995 /django/db/models/fields
parent7eaf329ad38ff7ea6b47f1b0a3c20ca7a5ad079b (diff)
[1.7.x] Fixed #12030 -- Validate integer field range at the model level.
Thanks to @timgraham for the review. Backport of 1506c71a95 from master
Diffstat (limited to 'django/db/models/fields')
-rw-r--r--django/db/models/fields/__init__.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 8dfe7e79e5..4ebb6049b3 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -1561,6 +1561,16 @@ class IntegerField(Field):
}
description = _("Integer")
+ def __init__(self, *args, **kwargs):
+ field_validators = kwargs.setdefault('validators', [])
+ internal_type = self.get_internal_type()
+ min_value, max_value = connection.ops.integer_field_range(internal_type)
+ if min_value is not None:
+ field_validators.append(validators.MinValueValidator(min_value))
+ if max_value is not None:
+ field_validators.append(validators.MaxValueValidator(max_value))
+ super(IntegerField, self).__init__(*args, **kwargs)
+
def get_prep_value(self, value):
value = super(IntegerField, self).get_prep_value(value)
if value is None: