【问题标题】:How can I create a MappingModel using pydantic?如何使用 pydantic 创建 MappingModel?
【发布时间】:2021-02-17 15:04:57
【问题描述】:

我正在尝试使用 pydantic 来创建一个可以验证通用映射的 JSON 模式,我可以将 any key 作为字符串,并且每个键都可以分配任何值。

我该怎么做?

到目前为止,我成功地使用 BaseModel 为我知道每个键名和类型的映射创建模型,但在这种情况下,它应该是任何键,只要是文本(或遵循正则表达式模式进行命名),没有限制关于赋值。

【问题讨论】:

    标签: pydantic


    【解决方案1】:

    我不确定我是否完全理解您的情况,但您可能需要 custom root type。像这样的:

    from typing import Dict, Any
    from pydantic import BaseModel
    
    
    class Model(BaseModel):
        __root__: Dict[str, Any]
    
        def __iter__(self):
            return iter(self.__root__)
    
        def __getattr__(self, item):
            return self.__root__[item]
    
    
    m = Model.parse_obj({'key1': 'val1', 'key2': 'val2'})
    assert m.key1 == "val1"
    

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 2020-12-27
      • 2023-04-10
      • 2020-05-22
      • 2020-07-04
      • 2022-08-24
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      相关资源
      最近更新 更多