从pydantic对象生成pydantic模型



是否有可能从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?

如果你想知道用例。我想建立一个web应用程序与Streamlit和Streamlit-pydantic。后者读取来自pydantic模型的UI-inputmask,如下所示:

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

实际操作

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

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

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

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