我有一个类似下面的模型
from pydantic import BaseModel
class FooModel(BaseModel):
bar: Optional[int]
baz: Optional[str]是否可以动态删除Optional/make bar和baz字段?有效地将上述FooModel动态转换为
class FooModel(BaseModel):
bar: int
baz: str我试过了
from pydantic import BaseModel
class FooModel(BaseModel):
bar: Optional[int]
baz: Optional[str]
def __init__(self, strict: bool = False, **data) -> None:
if strict:
for name in self.__fields__.keys():
self.__fields__[name].required = True
super().__init__(**data)但这会影响从FooModel继承的所有其他类(__fields__是一个类变量,我没有设法对其进行深度复制),这当然是不可取的。
发布于 2021-04-01 03:49:48
为什么从FooModel继承的类不应该具有这些必需的属性?
如果出于某种原因,只有FooModel需要foo和bar,您可以在if中添加检查。
def __init__(self, strict: bool = False, **data) -> None:
if strict and type(self) == FooModel:但是,您也可以选中Required Optional fields;此字段在创建模型对象时是必需的,但它的值也可以是None。
from pydantic import BaseModel
class FooModel(BaseModel):
bar: Optional[int] = ...
baz: Optional[str] = ...
class BarModel(FooModel): pass
FooModel(bar=42, baz="hello world")
BarModel(bar=None, baz=None)https://stackoverflow.com/questions/66894106
复制相似问题