Skip to content

分页类型 ​

TIP

本页是参考文档。要看怎么把分页接到端点上,去 给列表端点加分页。

PaginationRequest ​

python
from sqlmodel_ext import PaginationRequest

继承自 SQLModelBase。承载分页和排序参数的 DTO。

字段:

字段类型默认值约束
offsetint | None0ge=0
limitint | None50le=100
descbool | NoneTrue—
orderLiteral["created_at", "updated_at"] | None"created_at"—

TimeFilterRequest ​

python
from sqlmodel_ext import TimeFilterRequest

继承自 SQLModelBase。承载时间过滤参数的 DTO。

字段:

字段类型默认值语义
created_after_datetimedatetime | NoneNonecreated_at >= 此值
created_before_datetimedatetime | NoneNonecreated_at < 此值
updated_after_datetimedatetime | NoneNoneupdated_at >= 此值
updated_before_datetimedatetime | NoneNoneupdated_at < 此值

时间区间为左闭右开 [after, before)。

model_post_init 校验:

  • created_after_datetime >= created_before_datetime → ValueError
  • updated_after_datetime >= updated_before_datetime → ValueError
  • created_after_datetime >= updated_before_datetime → ValueError(创建时间不能晚于更新时间)

TableViewRequest ​

python
from sqlmodel_ext import TableViewRequest
python
class TableViewRequest(TimeFilterRequest, PaginationRequest):
    pass

TimeFilterRequest 和 PaginationRequest 的合并。同时承载分页 + 排序 + 时间过滤参数。

TableBaseMixin.get() / get_with_count() 接受 table_view: TableViewRequest | None 参数。当 offset / limit / order_by / 时间过滤参数同时提供时,显式参数优先,未提供时回退到 table_view 的值。

ListResponse[T] ​

python
from sqlmodel_ext import ListResponse

继承自 pydantic.BaseModel(不是 SQLModelBase),泛型类。

为什么不继承 SQLModelBase

SQLModel 的元类与 Generic[T] 的 schema 生成有冲突,参见 sqlmodel#1002。ListResponse 故意改用 BaseModel。

字段:

字段类型说明
countint匹配条件的总记录数
itemslist[T]当前页数据

model_config:

python
model_config = ConfigDict(use_attribute_docstrings=True)

典型返回值类型:get_with_count() 返回 ListResponse[T]。

信息响应 Mixin(DTO) ​

python
from sqlmodel_ext import (
    IntIdInfoMixin,
    UUIDIdInfoMixin,
    DatetimeInfoMixin,
    IntIdDatetimeInfoMixin,
    UUIDIdDatetimeInfoMixin,
)

用于响应 DTO 的 Mixin。这些字段在 API 响应中总是有值,所以声明为必填(无 | None)——区别于 TableBaseMixin 中的 id: int | None(INSERT 之前为 None)。

Mixin字段
IntIdInfoMixinid: int
UUIDIdInfoMixinid: UUID
DatetimeInfoMixincreated_at: datetime, updated_at: datetime
IntIdDatetimeInfoMixin上面两组合(int id)
UUIDIdDatetimeInfoMixin上面两组合(UUID id)

所有 Mixin 都继承 SQLModelBase。