summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Pope <nick.pope@flightdataservices.com>2017-12-11 15:35:19 +0000
committerTim Graham <timograham@gmail.com>2018-11-23 14:40:46 -0500
commitc512912463c11428e572fb409704b351b1b26dfd (patch)
treec735c6d9e6ed3bc8a1a08b00e31460156c097099
parent856ba1ec86e0fe6cf3039193bba4760c71f9ad60 (diff)
Refs #23801 -- Made integer field max_length warning show correct field type.
-rw-r--r--django/db/models/fields/__init__.py2
-rw-r--r--docs/ref/checks.txt3
-rw-r--r--tests/invalid_models_tests/test_ordinary_fields.py27
3 files changed, 20 insertions, 12 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index fb96cc333a..a446de0202 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -1773,7 +1773,7 @@ class IntegerField(Field):
if self.max_length is not None:
return [
checks.Warning(
- "'max_length' is ignored when used with IntegerField",
+ "'max_length' is ignored when used with %s." % self.__class__.__name__,
hint="Remove 'max_length' from field",
obj=self,
id='fields.W122',
diff --git a/docs/ref/checks.txt b/docs/ref/checks.txt
index 0173f437d0..acd860065f 100644
--- a/docs/ref/checks.txt
+++ b/docs/ref/checks.txt
@@ -143,7 +143,8 @@ Model fields
appeared before support for null values was added in Django 2.1.*
* **fields.E120**: ``CharField``\s must define a ``max_length`` attribute.
* **fields.E121**: ``max_length`` must be a positive integer.
-* **fields.W122**: ``max_length`` is ignored when used with ``IntegerField``.
+* **fields.W122**: ``max_length`` is ignored when used with
+ ``<integer field type>``.
* **fields.E130**: ``DecimalField``\s must define a ``decimal_places`` attribute.
* **fields.E131**: ``decimal_places`` must be a non-negative integer.
* **fields.E132**: ``DecimalField``\s must define a ``max_digits`` attribute.
diff --git a/tests/invalid_models_tests/test_ordinary_fields.py b/tests/invalid_models_tests/test_ordinary_fields.py
index 184041c24d..e1c04c2d36 100644
--- a/tests/invalid_models_tests/test_ordinary_fields.py
+++ b/tests/invalid_models_tests/test_ordinary_fields.py
@@ -617,17 +617,24 @@ class IntegerFieldTests(SimpleTestCase):
def test_max_length_warning(self):
class Model(models.Model):
- value = models.IntegerField(max_length=2)
+ integer = models.IntegerField(max_length=2)
+ biginteger = models.BigIntegerField(max_length=2)
+ smallinteger = models.SmallIntegerField(max_length=2)
+ positiveinteger = models.PositiveIntegerField(max_length=2)
+ positivesmallinteger = models.PositiveSmallIntegerField(max_length=2)
- field = Model._meta.get_field('value')
- self.assertEqual(field.check(), [
- DjangoWarning(
- "'max_length' is ignored when used with IntegerField",
- hint="Remove 'max_length' from field",
- obj=field,
- id='fields.W122',
- )
- ])
+ for field in Model._meta.get_fields():
+ if field.auto_created:
+ continue
+ with self.subTest(name=field.name):
+ self.assertEqual(field.check(), [
+ DjangoWarning(
+ "'max_length' is ignored when used with %s." % field.__class__.__name__,
+ hint="Remove 'max_length' from field",
+ obj=field,
+ id='fields.W122',
+ )
+ ])
@isolate_apps('invalid_models_tests')