如何将Pydantic的BaseModel解包成kwargs?

4
我正在尝试编写一个函数,该函数以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类,而不是将其转换为字典。
我可以想出一种方法来实现,但我找不到一种简洁的方法。

为什么不直接使用job: Job参数,而要使用**kwargs呢? - Hernán Alarcón
@HernánAlarcón 我在使用别人的代码,我将回去修改它以接受 job,但现在我只想解压基本模型。 - Tom McLean
1个回答

1

我解决了,只需要用__dict__替换.dict()

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接