从 pydantic 对象生成一个 pydantic 模型

Generate a pydantic model from pydantic object

是否可以从一个 pydantic 模型的实例创建一个 pydantic 模型,以便保持这些值?像这样:

from pydantic import create_model,BaseModel,Field
from typing import Optional

class ExampleModel(BaseModel):
    some_text: str
    optional_number: Optional[float]

instance=ExampleModel(some_text="foo")

dynamic_Model=create_model("Parameters",__config__=instance.Config)
dyn_instance=dynamic_Model()

print(instance)
print(dyn_instance) #this has no attributes so it's an empty line
print("Is it equal ? "+ str(dyn_instance == instance)) #can this be true?

如果您想了解用例。我想用 Streamlit and Streamlit-pydantic 构建一个网络应用程序。后者从像这样的 pydantic 模型中提取了一个 UI-inputmask:

instance_of_pydantic_model=sp.pydantic_form(model=pydanticModel, key='some key')

See it in action

这会导致多页应用程序出现问题,即 Input_mask 在切换到另一页并返回后不会显示任何用户输入。

如果您正确使用 create_model 函数,它会起作用:

dynamic_Model=create_model("Parameters",**vars(instance))

使用 Streamlit pydantic,输​​入掩码保持一致,即使是可选字段,现在填充了一个值。