Skip to content

Pagination types

TIP

This is reference documentation. To learn how to wire pagination into an endpoint, see Paginate a list endpoint.

PaginationRequest

python
from sqlmodel_ext import PaginationRequest

Inherits from SQLModelBase. DTO carrying pagination and sorting parameters.

Fields:

FieldTypeDefaultConstraint
offsetint | None0ge=0
limitint | None50le=100
descbool | NoneTrue
orderLiteral["created_at", "updated_at"] | None"created_at"

TimeFilterRequest

python
from sqlmodel_ext import TimeFilterRequest

Inherits from SQLModelBase. DTO carrying time filter parameters.

Fields:

FieldTypeDefaultSemantics
created_after_datetimedatetime | NoneNonecreated_at >= value
created_before_datetimedatetime | NoneNonecreated_at < value
updated_after_datetimedatetime | NoneNoneupdated_at >= value
updated_before_datetimedatetime | NoneNoneupdated_at < value

Time intervals are half-open: [after, before).

model_post_init validation:

  • created_after_datetime >= created_before_datetimeValueError
  • updated_after_datetime >= updated_before_datetimeValueError
  • created_after_datetime >= updated_before_datetimeValueError (creation time cannot be later than update time)

TableViewRequest

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

Combination of TimeFilterRequest and PaginationRequest. Carries pagination + sorting + time filtering parameters in one DTO.

TableBaseMixin.get() / get_with_count() accept table_view: TableViewRequest | None. When offset / limit / order_by / time filter parameters are also provided as explicit arguments, explicit arguments take precedence; missing ones fall back to table_view.

ListResponse[T]

python
from sqlmodel_ext import ListResponse

Inherits from pydantic.BaseModel (not SQLModelBase). Generic class.

Why not SQLModelBase

SQLModel's metaclass conflicts with Generic[T] schema generation; see sqlmodel#1002. ListResponse deliberately uses BaseModel instead.

Fields:

FieldTypeDescription
countintTotal number of records matching the query
itemslist[T]The current page's items

model_config:

python
model_config = ConfigDict(use_attribute_docstrings=True)

Typical return type: get_with_count() returns ListResponse[T].

Info response mixins (DTO)

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

Mixins for response DTOs. These fields always have values in API responses, so they are declared as required (no | None) — distinct from TableBaseMixin's id: int | None (which is None before INSERT).

MixinFields
IntIdInfoMixinid: int
UUIDIdInfoMixinid: UUID
DatetimeInfoMixincreated_at: datetime, updated_at: datetime
IntIdDatetimeInfoMixinCombines the above two (int id)
UUIDIdDatetimeInfoMixinCombines the above two (UUID id)

All mixins inherit from SQLModelBase.