Как проверить поле JSON с именем "from"
Я хочу проверить JSON-объект (он находится в Telegram Bot API), который содержит поле from (которое является зарезервированным словом в Python), используя pydantic validator. Поэтому моя модель должна выглядеть следующим образом:
class Message(BaseModel):
message_id: int
from: Optional[str]
date: int
chat: Any
...
Но использование ключевого слова from не допускается в этом контексте.
Как я мог это сделать?
Примечание: это отличается от "Почему мы не можем использовать ключевые слова в качестве атрибутов", потому что здесь мы получаем внешний JSON, который мы не контролируем, и в любом случае мы должны обрабатывать JSON с полем from.
2 ответа
Я верю, что вы можете заменить from
с from_
,
Вы можете сделать это так:
class Message(BaseModel):
message_id: int
from_: Optional[str]
date: int
chat: Any
class Config:
fields = {
'from_': 'from'
}
...
Там может быть способ сделать это с помощью class
заявление, но я не видел ничего в быстром просмотре документации. Что вы можете сделать, это использовать динамическое создание модели вместо этого.
fields = {
'message_id': (int,),
'from': (Optional[str], ...),
'date': (int, ...),
'chat': (Any, ...)
}
Message = create_model("Message", **fields)