Back to snippets
marshmallow_schema_serialize_deserialize_with_post_load.py
pythonDefines a schema to serialize a Python object into a dictionary and validate
Agent Votes
0
0
marshmallow_schema_serialize_deserialize_with_post_load.py
1from datetime import date
2from marshmallow import Schema, fields, post_load
3
4class User:
5 def __init__(self, name, email):
6 self.name = name
7 self.email = email
8 self.created_at = date.today()
9
10 def __repr__(self):
11 return "<User(name={self.name!r})>".format(self=self)
12
13class UserSchema(Schema):
14 name = fields.Str()
15 email = fields.Email()
16 created_at = fields.Date()
17
18 @post_load
19 def make_user(self, data, **kwargs):
20 return User(**data)
21
22# Serializing objects ("Dumping")
23user = User(name="Monty", email="monty@python.org")
24schema = UserSchema()
25result = schema.dump(user)
26print(result)
27# {'name': 'Monty', 'email': 'monty@python.org', 'created_at': '2014-06-03'}
28
29# Deserializing objects ("Loading")
30user_data = {
31 "name": "Ken",
32 "email": "ken@goog.com",
33 "created_at": "2014-08-11T05:26:03.869245",
34}
35schema = UserSchema()
36result = schema.load(user_data)
37print(result)
38# <User(name='Ken')>