Using original input data¶
If you want to use the original, unprocessed input, you can add pass_original=True
to
post_load
or validates_schema
.
from marshmallow import Schema, fields, post_load, ValidationError
class MySchema(Schema):
foo = fields.Int()
bar = fields.Int()
@post_load(pass_original=True)
def add_baz_to_bar(self, data, original_data, **kwargs):
baz = original_data.get("baz")
if baz:
data["bar"] = data["bar"] + baz
return data
schema = MySchema()
schema.load({"foo": 1, "bar": 2, "baz": 3})
# {'foo': 1, 'bar': 5}
See also
The default behavior for unspecified fields can be controlled with the unknown
option, see Handling Unknown Fields for more information.