我想为这个结构创建一个Pydantic模型:
{
"key-1": ["value-1", "value-2"],
"key-2": ["value-3"],
"key-3": []
}我第一次尝试
class MyModel(BaseModel):
__root__ = Dict[str, List[str]]
@root_validator(pre=True)
def validate_all_the_things(cls, values):
# check if keys and values match some regexes但这带来了一个例外:
RuntimeError: no validator found for <class 'typing._GenericAlias'>, see `arbitrary_types_allowed` in Config如果我将Dict更改为dict,则不会得到异常,但得到的对象将产生一个空的dict:
>>> MyModel(**{"key-1": ["value-1"]}).dict()
{}我做错什么了?
发布于 2022-08-04 20:26:07
您在模型声明中有一个错误。用冒号代替等号。
from typing import List, Dict
from pydantic import BaseModel
class MyModel(BaseModel):
__root__: Dict[str, List[str]]然后您可以创建一个模型实例:
>>> my_instance = MyModel.parse_obj({"key-1": ["value-1"]})
>>> my_instance.dict()
{'__root__': {'key-1': ['value-1']}}您可以在这里找到更多信息:自定义根类型
也请看这一节。也许你会在这里发现一些有趣的东西:动态模型创建
https://stackoverflow.com/questions/73231505
复制相似问题