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_datetimeValueError
  • updated_after_datetime >= updated_before_datetimeValueError
  • created_after_datetime >= updated_before_datetimeValueError(创建时间不能晚于更新时间)

TableViewRequest

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

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

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