这是我的代码片段:
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 文档
我认为你需要 PydenticModel 在其配置中有 orm_mode = True
在快速 API 中使用分页并通过在模型类中添加 orm_mode = True 来解决问题时,我遇到了同样的问题。
带有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
必须成为:
model_config = SettingsConfigDict(from_attributes=True)