FastAPI嵌套模型返回

2024-06-28 18:57:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个项目开发一个python API,我遇到了一个非常简单的错误,但我找不到解决方法

如果可能有帮助,请查看我的GitHub repo以获得代码确认

为了更好地理解这个问题,请考虑栈(FastAPI,PyyLyM[MySQL ]和PyDyTiC)

在我的viewmodel(src/domain/viewmodel/loans.py)上,我有一个嵌套的响应类,其中包括其他两个viewmodel(学生和仪器)

查看我的贷款存储库(/src/data/repositories/loans.py),我尝试查询所有表的联接。pony不带对象本身,只带数据库对象的ID。因此,当我请求此路由时,我得到一个pydantic错误:

    return paginate([cls.Validator.from_orm(obj) for obj in cls.Repository.get(lented_date, returned_date, instrument_uuid, student_uuid)], pagination)
  File "pydantic/main.py", line 573, in pydantic.main.BaseModel.from_orm
pydantic.error_wrappers.ValidationError: 5 validation errors for ResponseLoanSchema
instrument
  field required (type=value_error.missing)
student
  field required (type=value_error.missing)

我不知道用数据库对象返回的最佳方法是什么

总之,响应对象应该类似于:

[
    {
      "uuid": "string",
      "instrument": [
        {
          "uuid": "string",
          "instrument-id": "string",
          "name": "string",
          "instrument-type": "string",
          "notes": "string",
          "repair": true,
          "active": true
        }
      ],
      "student": {
        "uuid": "string",
        "name": "string",
        "surname": "string",
        "ra": "string",
        "blocked": true,
        "active": true
      },
      "lented_at": "string",
      "returned_at": "string"
    }
  ]

Tags: 对象方法pysrctruestringuuidtype