Код ниже должен проверить ваш шаблон данных.
Посмотрите на комментарии в коде, это простое объяснение.
from marshmallow import ValidationError, Schema, fields, pprint # Added `ValidationError`.
user_data = {
"name": "Ken",
"food": [
{'apple': 2, 'banana': 4},
{'apple': '2', 'banana': '4'}
]
} # `user_data` is as is without changes.
# New function for validation your dictionary.
def validate_value_type(dict):
for key in dict:
if type(dict[key]) is not int:
raise ValidationError(f'Type of {key}\'s value is not Integer')
# `UserSchema` class with changes.
class UserSchema(Schema):
name = fields.Str()
food = fields.List(fields.Dict(validate=validate_value_type)) # Added validation function.
# Wrapped `load` in `try/catch`.
try:
UserSchema().load(user_data)
except ValidationError as err:
pprint(err.messages)
Выше кода:
{'food': {1: ["Type of apple's value is not Integer"]}}