From 78211b13a51f2ada1c7beb81ff97ef11f9e239eb Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Mon, 3 Mar 2014 20:12:42 -0500 Subject: [1.7.x] Fixed #12030 -- Validate integer field range at the model level. Thanks to @timgraham for the review. Backport of 1506c71a95 from master --- django/db/models/fields/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'django/db/models/fields') 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: -- cgit v1.3