Pydantic:env_nested_delimiter 用于嵌套列表
Pydantic: env_nested_delimiter for a nested list
Pydantic 在版本 1.9
-ish env_nested_delimiter
中引入,一种以方便的方式解析环境变量的机制。
我在设置中有这个模块:
from pydantic import BaseModel, BaseSettings
class SubModel(BaseModel):
v1: str
v2: bytes
v3: int
class Settings(BaseSettings):
v0: str
sub_models: [SubModel]
class Config:
env_nested_delimiter = '__'
print(Settings().dict())
有没有办法在带有分隔符的 .env 文件中定义我的 sub_models
(SubModel
个实例中的 list
)的元素?我已经试过了:
SUB_MODELS__0__SUB_MODEL__V2=00
SUB_MODELS__0__SUB_MODEL__V3=01
SUB_MODELS__0__SUB_MODEL__DEEP__V4=01
SUB_MODELS__1__SUB_MODEL__V2=nested-10
SUB_MODELS__1__SUB_MODEL__V3=11
SUB_MODELS__1__SUB_MODEL__DEEP__V4=12
但是没有用。我不确定当前版本的 pydantic 是否可行。也许定界符只限于 dict-like 数据结构。
调查source code,好像不太可能。至少在版本 1.9.0.
Pydantic 在版本 1.9
-ish env_nested_delimiter
中引入,一种以方便的方式解析环境变量的机制。
我在设置中有这个模块:
from pydantic import BaseModel, BaseSettings
class SubModel(BaseModel):
v1: str
v2: bytes
v3: int
class Settings(BaseSettings):
v0: str
sub_models: [SubModel]
class Config:
env_nested_delimiter = '__'
print(Settings().dict())
有没有办法在带有分隔符的 .env 文件中定义我的 sub_models
(SubModel
个实例中的 list
)的元素?我已经试过了:
SUB_MODELS__0__SUB_MODEL__V2=00
SUB_MODELS__0__SUB_MODEL__V3=01
SUB_MODELS__0__SUB_MODEL__DEEP__V4=01
SUB_MODELS__1__SUB_MODEL__V2=nested-10
SUB_MODELS__1__SUB_MODEL__V3=11
SUB_MODELS__1__SUB_MODEL__DEEP__V4=12
但是没有用。我不确定当前版本的 pydantic 是否可行。也许定界符只限于 dict-like 数据结构。
调查source code,好像不太可能。至少在版本 1.9.0.