首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >嵌套的Pydantic模型返回FastAPI错误:需要字段(type=value_error.missing)

嵌套的Pydantic模型返回FastAPI错误:需要字段(type=value_error.missing)
EN

Stack Overflow用户
提问于 2021-04-01 21:26:31
回答 1查看 2.6K关注 0票数 1

我在使用FastAPIPydantic时遇到了问题。我尝试根据我的Pydantic模型返回一个记录列表。

以下是SQLAlchemy元数据:

代码语言:javascript
运行
AI代码解释
复制
from sqlalchemy import MetaData, Table, Column, Integer, JSON, Boolean
from sqlalchemy.sql import expression

metadata = MetaData()

CustomLayers = Table(
    "custom_layers",
    metadata,
    Column("id", Integer, primary_key=True),
    Column("data", JSON),
    Column("is_public", Boolean, default=expression.false()),
    Column("user_id", Integer),
)

下面是“相应的”pydantic模型:

代码语言:javascript
运行
AI代码解释
复制
from geojson_pydantic.features import FeatureCollection
from pydantic import BaseModel

class CustomLayerResponse(BaseModel):
    is_public: bool
    data: FeatureCollection
    user_id: int
    id: int

    class Config:
        orm_mode = True

这是我的路线:

代码语言:javascript
运行
AI代码解释
复制
@router.get("/", response_model=List[CustomLayerResponse], status_code=status.HTTP_200_OK)
async def retrieve_by_user(user_id: int):
    layer_records = await customlayers_repository.retrieve_by_user_id(user_id)
    return layer_records

下面是使用Databases library的检索操作(基于SQL Alchemy )

代码语言:javascript
运行
AI代码解释
复制
async def retrieve_by_user_id(user_id: int):
    query = CustomLayersTable.select().where(user_id == CustomLayersTable.c.user_id)
    return await database.fetch_all(query=query)

但是当我运行这个的时候,我得到了来自pydantic的几束ValidationError,上面写着:

代码语言:javascript
运行
AI代码解释
复制
response -> 7 -> id
  field required (type=value_error.missing)
response -> 7 -> user_id
  field required (type=value_error.missing)
response -> 7 -> is_public
  field required (type=value_error.missing)
response -> 7 -> data
  field required (type=value_error.missing)

但真正奇怪的是,如果我遍历ORM返回的DB记录,并以这种方式手动创建pydantic模式的实例:

代码语言:javascript
运行
AI代码解释
复制
@router.get("/", response_model=List[CustomLayerResponse], status_code=status.HTTP_200_OK)
async def retrieve_by_user(user_id: int):
    layer_records = await customlayers_repository.retrieve_by_user_id(user_id)
    response = []
    for l in layer_records:
        manual_instance = CustomLayerResponse(data=FeatureCollection.parse_raw(l.get("data")),
                                user_id=l.get("user_id"),
                                id=l.get("id"),
                                is_public=l.get("is_public"))
        response.append(manual_instance)
    return response

然后,一切都像预期的那样工作,我得到了CustomLayerResponse的列表作为响应。

所以我想知道来自pydantic模型的“自动”验证(由FastAPI提供的response_model参数提供的验证,我在这里设置为List[CustomLayerResponse])会有什么问题?

EN

回答 1

Stack Overflow用户

发布于 2021-06-30 00:41:55

您的数据字段应该使用同时扩展FeatureCollection和BaseModel的类,以便您也可以将其Config子类字段orm_true设置为true。

我还没有用FeatureCollection it自己测试过这一点,但类似的事情发生在我身上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66911760

复制
相关文章
Apache POI Strict OOXML isn’t currently 错误
这是因为你的 Excel 保存的格式版本为 Strict Open XML 格式。
HoneyMoose
2020/12/05
2K0
Apache POI Strict OOXML isn’t currently 错误
POI合并单元格
核心代码: CellRangeAddress region = new CellRangeAddress(rowNum2-(chongfucishu-1), rowNum2, 0, 0); sheet2.addMergedRegion(region); //year1 年份重复的 for (String key : map_year1.keySet()) { String years = key;//重
手撕代码八百里
2020/07/28
1.4K0
POI解析单元格格式
需要注意的是:在调用getCellValue方法之前不用设置该单元格格式,否则解析有可能不成功(因为你不知道单元格格式,除非你采用getCellValue方法内部的方式判断--冗余代码)。
johnhuster的分享
2022/03/28
7850
POI解析单元格格式
【POI框架实战】——POI设置Excel单元格格式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/49911537
DannyHoo
2018/09/13
5.3K0
【POI框架实战】——POI设置Excel单元格格式
Apache POI总结 原
Apache POI  是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。
wuweixiang
2018/08/14
1.1K0
Apache POI使用详解[通俗易懂]
开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel
全栈程序员站长
2022/09/14
5K0
Apache POI使用详解[通俗易懂]
POI判断某个单元格是否是合并单元格
注:比如我们的数据是上面N个单元组成,且每个单元所占行数可能不同。第一列占据一列,中间数据每个占用一个单元格,最后一列与第一列占用相同的行数,这时我们需要获取起始单元格占用几行(起始行--结束行),获取到这些数据后我们就能读取中间单元格数据(这些数据可以作为上面单元的一个属性),下面给出具体代码:
johnhuster的分享
2022/03/28
3.2K0
POI判断某个单元格是否是合并单元格
POI读取excel某个单元格内容
POI是一个不错的库,我们可以使用这个库读写EXCEL,WORD等类型文件,EXCEL尤其使用比较广泛,下面直接给出代码:
johnhuster的分享
2022/03/28
8660
poi设置单元格下拉下表
poi是读写excel最常用的一个开源中间件,实际使用中我们可能会遇到这样的需求:限制某列单元格只能输入特定的内容,这就是excel的下拉列表特性,以下是wps中excel的一个截图:
johnhuster的分享
2022/03/28
1.1K0
poi设置单元格下拉下表
数据驱动框架(Apache POI – Excel)
自动化测试框架是用于创建和设计测试用例的一组准则或规则。该准则包括编码标准,对象存储库,测试数据处理方法,存储测试结果的过程或有关如何访问外部资源的任何其他信息。
用户8460142
2023/07/07
3160
数据驱动框架(Apache POI – Excel)
【POI框架实战】——POI导出Excel时设置单元格类型为数值类型
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/49786227
DannyHoo
2018/09/13
5.3K0
【POI框架实战】——POI导出Excel时设置单元格类型为数值类型
[实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能)
你好!这是由一个刚毕业的学生,由于项目所需,需要通过Java后台的方式打印Word文档,因此在对大量能操作word的Java API中,选择了Apache POI。以下将简单分享一下这个在学习和开发这个基于POI的word文档打印工具时,一些心得:
RRT冻羊
2022/11/03
4.1K0
[实用][更新中]Java Apache POI 打印Word文档工具(含文本替换,动态表格功能)
Excel文件导入导出操作
日常开发工作中对于文件的相关操作大家多少都会涉及:上传解析、数据导出等。此篇内容主要分享一下工作中常用的Excel文件的解析和导出工作类实现。
沁溪源
2020/10/13
1.3K0
java中poi导出模板下拉框实现二级联动
代码实现如下: 需要加入的jar包: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version>
崔笑颜
2020/06/08
3.5K0
POI -纯java代码实现导出excel表格
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - 提供读写Microsoft Word格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式档案的功能。 HDGF - 提供读写Microsoft Visio格式档案的
小帅丶
2018/02/08
2.7K0
Apache POI 读取 Microsoft Office Excel 文档
Apache POI 项目的使命是创造和维护 Java API 操纵各种格式的文件,其中包括基于 Office Open XML 标准(OOXML)和微软的 OLE 2 Compound Document 格式(OLE2)。
HoneyMoose
2020/12/03
6630
Apache POI 读取 Microsoft Office Excel 文档
通过 Excel 来认识神器 Apache POI
Apache POI - the Java API for Microsoft Documents,顾名思义,Apache的三方包,用来操作微软office文档的,多数时候用来操作excel,所以这里就以excel方面来说明。
二哥聊运营工具
2021/12/17
1K0
通过 Excel 来认识神器 Apache POI
Java操作Office:POI之word生成
最近在项目开发中,有数据导出到word的需求。这就涉及代码生成word文档的操作,且有格式要求。大家用word做过简历的都有了解,做简历时,会使用表格、图片、文字等元素。而且表格也可能有嵌套、合并单元格,以及插入图片到单元格的操作。该怎么做?
程序员架构进阶
2021/08/23
2.6K0
Java操作Office:POI之word生成
Java操作Office:POI之word生成
最近在项目开发中,有数据导出到word的需求。这就涉及代码生成word文档的操作,且有格式要求。 大家用word做过简历的都有了解,做简历时,会使用表格、图片、文字等元素。而且表格也可能有嵌套、合并单元格,以及插入图片到单元格的操作。该怎么做?
程序员架构进阶
2021/08/06
6K0
JavaWeb中将数据从数据库导出到Excel表的实例
这个博客里面开发的项目,使用POI导出Excel,经过修改支持文件弹窗选择,在使用中包括以下几步。 1.添加jar包
geekfly
2022/04/24
1.1K0
JavaWeb中将数据从数据库导出到Excel表的实例

相似问题

Kafka Streams内部主题命名

52

Kafka Streams内部主题重定向

121

Kafka Streams死信队列/隔离主题

15

kafka streams in runtime change in/out主题

110

Kafka Streams -共享的变更主题

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档