You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pydantic RootModel与BaseModel时出现items属性缺失错误求助

问题解决:Pydantic RootModel与BaseModel结合遍历报错

问题原因

  1. 第一个错误'DataJsonExec' object has no attribute 'items':DataJsonExec继承自RootModel,内部数据存储在.root属性中,直接调用实例的items()方法自然找不到,你已经通过request1 = request.request1.root解决了这个问题。
  2. 第二个错误'FeatureConfig' object has no attribute 'items':遍历request1.items()时,process是FeatureConfig的实例(而非字典),BaseModel子类实例没有items()方法,因此触发报错。

解决方案

针对第二个错误,有两种常用解决方式:

方式1:将BaseModel实例转为字典

使用Pydantic的model_dump()方法把FeatureConfig实例转换成字典,之后就能用items()遍历所有字段:

@app.post("/json-exec")
def execute_generated_json(request : JsonExecutionRequest):
   user_session_id = request.user_session_id
   table_name = request.table_name
   request1 = request.request1.root
   request2 = request.request2
   for column_name, process in request1.items(): 
        # 将FeatureConfig实例转为字典
        process_dict = process.model_dump()
        for name, value in process_dict.items():
            # 此处添加你的处理逻辑
            print(f"{name}: {value}")

方式2:直接访问BaseModel的属性

因为FeatureConfig的结构是明确的(strategy和parameters两个字段),直接访问属性比转字典更高效:

@app.post("/json-exec")
def execute_generated_json(request : JsonExecutionRequest):
   user_session_id = request.user_session_id
   table_name = request.table_name
   request1 = request.request1.root
   request2 = request.request2
   for column_name, process in request1.items(): 
        # 直接访问属性
        strategy = process.strategy
        parameters = process.parameters
        # 此处添加你的处理逻辑
        print(f"列名: {column_name}, 策略: {strategy}, 参数: {parameters}")

可选优化:简化模型定义

如果不需要RootModel的特殊功能,可以直接将request1定义为Dict[str, FeatureConfig],这样就不需要通过.root访问内部数据:

class JsonExecutionRequest(BaseModel):
    user_session_id : str = Field("xxx", description="user session id")
    table_name : str = Field("xxx", description="Name of the field")
    request1: Dict[str, FeatureConfig]  # 直接用Dict类型替代RootModel
    request2: ModelReq

修改后可直接使用request.request1.items()遍历,无需额外处理。

内容的提问来源于stack exchange,提问作者Sanjith Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 18:43:14