diff options
| author | Simon Charette <charette.s@gmail.com> | 2014-03-03 20:12:42 -0500 |
|---|---|---|
| committer | Simon Charette <charette.s@gmail.com> | 2014-03-25 14:31:54 -0400 |
| commit | 78211b13a51f2ada1c7beb81ff97ef11f9e239eb (patch) | |
| tree | 2bd0dd1116c06a3705f423d278ee8bf723128995 /django/db/models/fields | |
| parent | 7eaf329ad38ff7ea6b47f1b0a3c20ca7a5ad079b (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__.py | 10 |
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: |
