diff --git a/.gitignore b/.gitignore index b8f00fed..b03bf592 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,7 @@ node_modules # pyenv .python-version +.venv # Jet Brains .idea diff --git a/flask_restx/fields.py b/flask_restx/fields.py index 031fdd61..ef357df6 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..ca291d44 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_default_on_none(self): + field = fields.Float(default=0.5) + assert not field.required + assert field.__schema__ == {"type": "number", "default": 0.5} + self.assert_field(field, None, 0.5) + @pytest.mark.parametrize( "value,expected", [("-3.13", -3.13), (str(-3.13), -3.13), (3, 3.0),] )