Now, we will create the Flask-Marshmallow schemas that we will use to validate, serialize, and deserialize the previously declared Category
and Message
models and their relationships. Open the api/models.py
file and add the following code after the existing lines. The lines that declare the fields related to the other schemas are highlighted in the code listing. The code file for the sample is included in the restful_python_chapter_06_01
folder:
class CategorySchema(ma.Schema):
id = fields.Integer(dump_only=True)
name = fields.String(required=True, validate=validate.Length(3))
url = ma.URLFor('api.categoryresource', id='<id>', _external=True)
messages = fields.Nested('MessageSchema', many=True, exclude=('category',))
class MessageSchema(ma.Schema):
id = fields.Integer(dump_only=True)
message = fields.String(required=True, validate=validate.Length(1))
duration = fields.Integer()
...