Целое число и строку нельзя отличить с помощью pydantic

from pydantic import BaseModel


class AuthenticationResponseSchema(BaseModel):
    type: str
schema = AuthenticationResponseSchema(type=1)

Теперь я меняю зефир на pydantic для схемы, модели ...

Но pydantic схема не проверяла type при ответе данных.

тип данных type - строка, но передается и целое число.

что случилось?

Спасибо.


person MyungHun    schedule 13.12.2020    source источник
comment
См. stackoverflow.com/a/65213960/13782669   -  person alex_noname    schedule 13.12.2020


Ответы (1)


Как статистика в документации

строки принимаются как есть, int float и Decimal приводятся с использованием str (v), байты и bytearray преобразуются с помощью v.decode (), перечисления, наследуемые от str, преобразуются с использованием v.value, а все другие типы вызывают ошибку

Если вы хотите принудительно использовать строку, есть вещь под названием Strict Types, так что вы можете использовать StrictStr.

from pydantic import BaseModel, StrictStr


class AuthenticationResponseSchema(BaseModel):
    type: StrictStr


schema = AuthenticationResponseSchema(type=1)

person Tom Wojcik    schedule 13.12.2020
comment
спасибо 4 доллара! - person MyungHun; 13.12.2020