diff --git a/flask_restx/fields.py b/flask_restx/fields.py index 18e973a0..00764d01 100644 --- a/flask_restx/fields.py +++ b/flask_restx/fields.py @@ -481,6 +481,8 @@ class Float(NumberMixin, Raw): def format(self, value): try: + if value is None: + return self.default return float(value) except (ValueError, TypeError) as ve: raise MarshallingError(ve) diff --git a/tests/test_fields.py b/tests/test_fields.py index e54fb6a9..09b7e271 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -333,6 +333,12 @@ def test_with_default(self): assert not field.required assert field.__schema__ == {"type": "number", "default": 0.5} + def test_none_uses_default(self): + field = fields.Float(default=0.5) + assert not field.required + assert field.__schema__ == {"type": "number", "default": 0.5} + assert field.format(None) == 0.5 + @pytest.mark.parametrize( "value,expected", [("-3.13", -3.13), (str(-3.13), -3.13), (3, 3.0),] )