使用 FastApi 进行分页时出现 Pydantic 验证问题

问题描述 投票:0回答:2

这是我的代码片段:

from fastapi_pagination import Page, add_pagination
from fastapi_pagination.ext.sqlalchemy import paginate

@app.get("/clients", response_model=Page[PydanticModel])
def get_items(
    db: Session = Depends(get_db) ) -> Any:
                           
    items = paginate(
        db.query(Model)
        .filter(...)
    )
    ...
    # do some extra manipulations ..
    ...
    items.items = new_items
    return items

当我在

Page[PydenticModel]
中指定
response_model
时,它会生成
paginte()
问题,因为它不是最终响应类型。
PydenticModel
对应于
new_items
而不是
items
(从
paginate()
返回),

pydantic.error_wrappers.ValidationError: validation errors for
Page[PydanticModel]

注意:我不想使用 Page[Any] 来保持良好的 Swagger 文档

python pagination fastapi pydantic nameko
2个回答
0
投票

我认为你需要 PydenticModel 在其配置中有 orm_mode = True

在快速 API 中使用分页并通过在模型类中添加 orm_mode = True 来解决问题时,我遇到了同样的问题。

在此处搜索 orm_mode 以获得更多详细信息

带有

orm_mode = True 的示例类

class Todo(BaseModel): id:int title: str description: Optional[str] priority: int complete: bool owner_id:int class Config: orm_mode = True
    

0
投票
类配置: orm_mode = True

必须成为:

model_config = SettingsConfigDict(from_attributes=True)

© www.soinside.com 2019 - 2024. All rights reserved.