Основные отличия между строгим и свободным режимами валидации в Pydantic:
- В строгом режиме (strict=True) данные не преобразуются. otus.ru Для большинства типов при проверке данных из Python в строгом режиме принимаются только экземпляры конкретных типов. pydantic.com.cn Например, при проверке поля int принимаются только экземпляры int, передача экземпляров float или str приведёт к возникновению ValidationError. pydantic.com.cn При этом при проверке данных из JSON в строгом режиме допускаются некоторые исключения: так, при проверке поля UUID экземпляры str будут приниматься при проверке из JSON, но не из Python. pydantic.com.cn
- В свободном режиме (strict=False) Pydantic при необходимости пытается привести данные к правильному типу. otus.ru Например, если модель ожидает int, а передаётся строка «123», Pydantic может преобразовать её в int. habr.com
Таким образом, основное отличие в том, что в строгом режиме проверка более строгая: для большинства типов принимаются только конкретные экземпляры, а в свободном режиме Pydantic пытается привести данные к желаемому типу. pydantic.com.cn docs.pydantic.dev