我在Pydantic Config中用extra = Extra.allow
定义了一个pydantic Schema。
是否有可能获得一个列表或一组单独传递给Schema的额外字段。
例如:
from pydantic import BaseModel as pydanticBaseModel
class BaseModel(pydanticBaseModel):
name: str
class Config:
allow_population_by_field_name = True
extra = Extra.allow
下面是JSON:
{
"name": "Name",
"address": "bla bla",
"post": "post"
}
我需要一个从pydantic
函数,如果可用,将返回所有额外的字段通过。喜欢:{"address", "post"}
3条答案
按热度按时间vtwuwzda1#
来自Pydantic Docs:
额外
在模型初始化过程中是否忽略、允许或禁止额外属性。接受
'ignore'
、'allow'
或'forbid'
的字符串值,或Extra
枚举的值(默认值:Extra.ignore
)。如果包含额外的属性,'forbid'
将导致验证失败,'ignore'
将默默忽略任何额外的属性,'allow'
将属性分配给模型。这可以包含在模型
Config
类中,或者在继承BaseModel
时作为参数。要获得额外的值,你可以做一些简单的事情,比如将类上定义的
__fields__
集合与示例上__dict__
中的值进行比较:2nc8po8w2#
据我所知,没有现成的解决方案。但是,由于您可以访问
pre
根验证器中传递的所有“原始”数据,包括额外的字段,因此可以将它们放在单独的字典中。例如here。感谢@PrettyWood提供:
sg24os4d3#
Pydantic extra fields行为在2.0版本中进行了更新。根据他们的文档,你现在不需要做任何事情,只需要将model_config
extra
字段设置为allow
,然后可以使用model_extra
字段或__pydantic_extra__
示例属性来获取额外字段的dict。