首页 > 解决方案 > 从 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?

如果您想知道用例。我想用StreamlitStreamlit-pydantic构建一个网络应用程序。后者从 pydantic 模型中重新生成 UI-inputmask,如下所示:

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

看到它在行动

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

标签: pythonstreamlitpydantic

解决方案


如果您正确使用 create_model 函数,它可以工作:

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

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


推荐阅读