如何将 Pydantic BaseModel 解压到 kwargs 中?

How can I unpack a Pydantic BaseModel into kwargs?

我正在尝试创建一个函数,将 pydantic BaseModel 作为另一个函数的 运行 的输入。我需要将 BaseModel 解压到 kwargs 中。我试过这样做:

def run_routing_from_job(job):
    return run_routing(
        job.inputs.input_file,
        **job.inputs.config.dict()
    )

其中 job 的格式为

class Job(BaseModel):
    client_info: ClientInfo  # Another BaseModel
    inputs: RoutingJobInputs  # Another BaseModel
    uid: UUID = Field(default_factory=uuid4)
    status: str = "job_queued"
    result: int = None

但是,.dict() 会递归地将所有项目解析为字典格式。我想将 client_infoinputs 保留为 BaseModel class,而不是将其转换为字典。

我可以找到一种方法来做到这一点,但我找不到一种干净的方法来做到这一点。

我算出来了,把.dict()换成__dict__

就行了
def run_routing_from_job(job):
    return run_routing(
        job.inputs.input_file,
        **job.inputs.config.__dict__
    )