Глядя на код Я думаю, что это невозможно, и я удивлен этим. Я знаю, что можно установить флаг строгий , но он работает только в определенных случаях. Обратите внимание:
from marshmallow import *
from marshmallow.validate import Range
class MySchema(Schema):
number = fields.Integer(strict=True, required=True, validate=[Range(min=1, error="Value must be greater than 0")])
Это работает в этом случае:
s = MySchema()
s.dumps({'number': "123.1"})
>>> MarshalResult(data='{}', errors={'number': ['Not a valid integer.']})
Но не в этом случае
s.dumps({'number': 123.1})
>>> MarshalResult(data='{"number": 123}', errors={})
s.dumps({'number': "123"})
>>> MarshalResult(data='{"number": 123}', errors={})
Что я нахожу противоречивым. Возможно, вам лучше всего написать пользовательское поле или другой валидатор, который проверяет ввод перед его передачей в вашу схему.