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

被折叠的 条评论
为什么被折叠?



