Explanation of the title:个
假设我们有以下PUDNIC模型的设置:
class ParametersA(BaseModel):
param_a: str = Field(
default=...,
allow_mutation=False,
exclude=False,
description="some description.",
extra={
"additional_bool": False
}
)
param_b: bool = Field(
default=False,
allow_mutation=True,
exclude=False,
description="some description.",
extra={
"additional_bool": False
}
)
# many more parameters of all types with additional constaints (le, gt, max_items,...)
class ParametersB(BaseModel):
param_c: float = Field(
default=-22.0,
exclude=False,
allow_mutation=True,
description="some floaty description",
gt=-180.0,
le=0.0,
extra={
"additional_bool": False,
"unit": "degree"
}
)
param_d: List[str] = Field(
default=["auto"],
exclude=False,
allow_mutation=True,
min_items=1,
max_items=4,
unique_items=True,
description="Some listy description.",
extra={
"auto_mode_available": False
}
)
# many more parameters of all types with additional constaints (le, gt, max_items,...)
这两个模型是另一个BaseModel
个模型中的领域:
class FullModelX(BaseModel):
parameters_A: ParametersA
parameters_B: ParametersB
问题是,是否有可能创造另一种模式:
class FullModelY(BaseModel):
parameters_A: ParametersA
parameters_B: ParametersB
哪些可以重用类ParametersA
和ParametersB
,但具有不同的验证限制和不同的元数据?例如,在FullModelX
中,ParametersA
中的param_b
的缺省值可能是False
,而在FullModelX
中应该是True
.同样的情况也适用于任何其他FieldInfo
处房产,如exclude
、gt
、le
等等.
到目前为止,我唯一的解决方案是在每次需要其他验证约束时复制ParametersA
和ParametersB
.