From 15673208a16690a21ca9649d6fc9fefde3e8509f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kan=20Waara?= Date: Tue, 23 Dec 2014 13:10:13 +0100 Subject: [PATCH 1/3] add failing test. adding a max_length argument to an IntegerField should be valid --- tests/test_model_serializer.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index da79164af..759f62c60 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -609,3 +609,21 @@ class TestSerializerMetaClass(TestCase): str(exception), "Cannot set both 'fields' and 'exclude'." ) + +class MaxIntLengthModel(models.Model): + count = models.IntegerField() + + +class TestIntegerMaxLength(TestCase): + def test_max_length(self): + class BasicModelSerializer(serializers.ModelSerializer): + class Meta: + model = MaxIntLengthModel + fields = ('count',) + + expected = dedent(""" + BasicModelSerializer(): + count = IntegerField() + """) + self.assertEqual(repr(BasicModelSerializer()), expected) + From eb44302c3d6a8b87cbc729d4ca59b588af06fb70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kan=20Waara?= Date: Tue, 23 Dec 2014 13:11:34 +0100 Subject: [PATCH 2/3] let integerfields handle max_length, although do nothing with it. --- rest_framework/fields.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index aab80982a..4c78ea051 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -644,6 +644,7 @@ class IntegerField(Field): def __init__(self, **kwargs): max_value = kwargs.pop('max_value', None) min_value = kwargs.pop('min_value', None) + max_length = kwargs.pop('max_length', None) # valid, but ignored. super(IntegerField, self).__init__(**kwargs) if max_value is not None: message = self.error_messages['max_value'].format(max_value=max_value) From 2fcc382fdf1e7acab9437955e90b3b9eedc62632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kan=20Waara?= Date: Tue, 23 Dec 2014 13:20:11 +0100 Subject: [PATCH 3/3] fix flake8 issues --- rest_framework/fields.py | 2 +- tests/test_model_serializer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 4c78ea051..e77817b5c 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -644,7 +644,7 @@ class IntegerField(Field): def __init__(self, **kwargs): max_value = kwargs.pop('max_value', None) min_value = kwargs.pop('min_value', None) - max_length = kwargs.pop('max_length', None) # valid, but ignored. + kwargs.pop('max_length', None) # valid, but ignored. super(IntegerField, self).__init__(**kwargs) if max_value is not None: message = self.error_messages['max_value'].format(max_value=max_value) diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 759f62c60..0b54764cb 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -610,6 +610,7 @@ class TestSerializerMetaClass(TestCase): "Cannot set both 'fields' and 'exclude'." ) + class MaxIntLengthModel(models.Model): count = models.IntegerField() @@ -626,4 +627,3 @@ class TestIntegerMaxLength(TestCase): count = IntegerField() """) self.assertEqual(repr(BasicModelSerializer()), expected) -