如何从字典更新 pydantic 模型?

Иль*_*нко 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)

fun*_*man 8

更新

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)