Иль*_*нко 7 python python-3.x pydantic
我有一个 pydantic 模型:
from pydantic import BaseModel
class MyModel(BaseModel):
value : str = 'Some value'
Run Code Online (Sandbox Code Playgroud)
我需要使用字典(而不是创建)来更新这个模型。
我尝试使用 更新模型class.__dict__
,但更新后这只是一个字典,而不是模型值。
所以我需要这样的东西:
from pydantic import BaseModel
class MyModel(BaseModel):
value : str = 'Some value'
model = MyModel()
update_model(model = model, data = {'value' : 'Bla bla bla'}) # here must be a function to update model :D
print(model.__dict__)
{'value' : 'Bla bla bla'}
Run Code Online (Sandbox Code Playgroud)
更新:
models.copy(...)
已被废弃,请使用model_copy(...)
。
您可以通过__dict__
直接更新属性来做到这一点,例如:
from pydantic import BaseModel
class MyModel(BaseModel):
value: str = 'Some value'
model = MyModel()
model.__dict__.update({'value': 'Bla bla bla'}) # or vars(model).update(...)
print(model.dict())
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用models.copy(...)
:
model = MyModel()
model = model.copy(update={'value': 'Bla bla bla'})
print(model.dict())
Run Code Online (Sandbox Code Playgroud)
输出:
{'value': 'Bla bla bla'}
Run Code Online (Sandbox Code Playgroud)