From 7c806aaaecd6071f827beb83f92dfc224a2cb491 Mon Sep 17 00:00:00 2001 From: "b.khasanov" Date: Fri, 13 May 2016 10:43:53 +0300 Subject: [PATCH 1/3] fix representation of IntegerField --- rest_framework/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 04dea89a2..baa932b2d 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -845,7 +845,7 @@ class IntegerField(Field): return data def to_representation(self, value): - return int(value) + return int(value) if value is not None else None class FloatField(Field): From 3b1895effd7497702553f34f48f7633d0a447b57 Mon Sep 17 00:00:00 2001 From: "b.khasanov" Date: Fri, 13 May 2016 11:24:43 +0300 Subject: [PATCH 2/3] fix representation of FloatField --- rest_framework/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index baa932b2d..a89e79b10 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -878,7 +878,7 @@ class FloatField(Field): self.fail('invalid') def to_representation(self, value): - return float(value) + return float(value) if value is not None else None class DecimalField(Field): From 6febc177d7dc0ad4f588502f3bc9e8d6f18d7caa Mon Sep 17 00:00:00 2001 From: "b.khasanov" Date: Fri, 13 May 2016 12:09:27 +0300 Subject: [PATCH 3/3] add tests --- tests/test_fields.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/test_fields.py b/tests/test_fields.py index 8b187ecd4..e367853f6 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -748,6 +748,15 @@ class TestIntegerField(FieldValues): } field = serializers.IntegerField() + def test_allow_null(self): + """ + If `allow_null=True` then `None` is a valid input. + """ + field = serializers.IntegerField(allow_null=True) + output = field.run_validation(None) + assert output is None + assert field.to_representation(None) is None + class TestMinMaxIntegerField(FieldValues): """ @@ -794,6 +803,15 @@ class TestFloatField(FieldValues): } field = serializers.FloatField() + def test_allow_null(self): + """ + If `allow_null=True` then `None` is a valid input. + """ + field = serializers.FloatField(allow_null=True) + output = field.run_validation(None) + assert output is None + assert field.to_representation(None) is None + class TestMinMaxFloatField(FieldValues): """