from pydantic import BaseModel
class AuthenticationResponseSchema(BaseModel):
type: str
schema = AuthenticationResponseSchema(type=1)
Теперь я меняю зефир на pydantic для схемы, модели...
Но схема pydantic не прошла проверку type
при ответе данных.
Тип данных type
— строка, но передается и целое число.
что не так?
Спасибо.
Как указано в документации
строки принимаются как есть, int float и Decimal преобразуются с помощью str(v), bytes и bytearray преобразуются с помощью v.decode(), перечисления, унаследованные от str, преобразуются с помощью v.value, а все остальные типы вызывают ошибку
Если вы хотите принудительно использовать строку, есть такая штука, как Строгие типы, так что вы можете использовать StrictStr
.
from pydantic import BaseModel, StrictStr
class AuthenticationResponseSchema(BaseModel):
type: StrictStr
schema = AuthenticationResponseSchema(type=1)
это как бы нарушает дух строгой типизации и принцип наименьшего удивления - мне не нравится такое дизайнерское решение
См. stackoverflow.com/a/65213960/13782669