5

我想通过使用pydantic验证器验证 JSON 对象(它在Telegram Bot API中),其中包含来自字段(Python 中的保留字)。所以我的模型应该如下所示:

class Message(BaseModel):
  message_id: int
  from: Optional[str]
  date: int
  chat: Any
  ...

但是使用来自在这种情况下不允许

我怎么能这样做?

注意:“为什么我们不能将关键字用作属性”不同,因为这里我们得到了我们无法控制的外部 JSON,无论如何我们都应该使用from字段处理 JSON。

4

2 回答 2

14

相信你可以fromfrom_.

你可以这样做:

class Message(BaseModel):
    message_id: int
    from_: Optional[str]
    date: int
    chat: Any

    class Config:
        fields = {
        'from_': 'from'
        }
    ...
于 2019-04-10T19:20:51.593 回答
2

可能有一种方法可以使用class语句来执行此操作,但我在快速浏览文档中没有看到任何内容。您可以做的是改用动态模型创建。

fields = {
    'message_id': (int,),
    'from': (Optional[str], ...),
    'date': (int, ...),
    'chat': (Any, ...)
 }
 Message = create_model("Message", **fields)
于 2019-04-10T19:23:39.807 回答