FastApi 踩坑日记--pydantic验证的各种报错“Extra inputs are not permitted,class ‘tortoise.models.Model.Meta‘“

作者在使用TortoiseORM和Pydantic进行数据库查询时,尝试将BannerRole表与Role表关联数据一起获取,但遇到ValidationError,原因是Pydantic2.7.0版本对Meta字段的额外输入进行了限制。降级到2.6.4版本后问题得到解决,但未找到具体更新说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用的tortoise-orm,然后两个表之间的关联

pydantic模型如下,意思就是BannerRole表中主键关联role表的数据,我想拿BannerRole表数据的同时在把role表数据放进去一起拿出来

Role_Pydantic = pydantic_model_creator(Role,name="Role")
BannerRole_Pydantic = pydantic_model_creator(BannerRole,name="BannerRole")
class BannerRole_Pydantic_OUT(BannerRole_Pydantic):
    role: Optional[Role_Pydantic] = None
    class Config:
        from_attributes = True

接口函数获取数据这么写的

bannerroles = await BannerRole_Pydantic_OUT.from_queryset( BannerRole.filter(isenble=1).prefetch_related('role'))

看着是不是没问题?
然后就报错了

pydantic_core._pydantic_core.ValidationError: 2 validation errors for BannerRole
2024-04-14T14:15:11.968215283Z role.Meta
2024-04-14T14:15:11.968216247Z   Extra inputs are not permitted [type=extra_forbidden, input_value=<class 'tortoise.models.Model.Meta'>, input_type=type]
2024-04-14T14:15:11.968217400Z     For further information visit https://errors.pydantic.dev/2.7/v/extra_forbidden
2024-04-14T14:15:11.968218461Z Meta
2024-04-14T14:15:11.968219399Z   Extra inputs are not permitted [type=extra_forbidden, input_value=<class 'tortoise.models.Model.Meta'>, input_type=type]
2024-04-14T14:15:11.968220503Z     For further information visit https://errors.pydantic.dev/2.7/v/extra_forbidden

什么meta验证失败什么的,但是之前的一个项目也是这么写的一样的操作
然后开始各种查问题,发现今天新创建的项目用的pydantic是2.7.0版本的,之前是2.6.4版本的
然后把新项目的pydantic卸载,重装2.6.4版本的,完美解决
虽然不知道2.7.0有什么更新的,但是这种无脑bug还没有参考资料的感觉先不去考虑了
能run就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁同学.

赏个早餐吃?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值