Skip to content

Filters

Filter, sorting, pagination, and field-projection classes. Import filter models from fastapi_views.filters.models and dependencies from fastapi_views.filters.dependencies.

For a complete walkthrough including resolver usage see Filters.

Filter models

Filter

Bases: PaginationFilter, OrderingFilter, SearchFilter, FieldsFilter, ModelFilter

Main filter class that implements all the functionalities: pagination, ordering, search, fields and custom attributes filter

Source code in fastapi_views/filters/models.py
class Filter(
    PaginationFilter,
    OrderingFilter,
    SearchFilter,
    FieldsFilter,
    ModelFilter,
):
    """Main filter class that implements all the functionalities:
    pagination, ordering, search, fields and custom attributes filter
    """

Dependencies

FilterDepends and NestedFilter are FastAPI dependency factories used to inject filter instances into view methods.


Resolvers

Resolvers translate a filter object into a data-layer query. Subclass the appropriate resolver and set filter_model before injecting it with Depends().

ObjectFilterResolver

SQLAlchemyFilterResolver

Column

Bases: Protocol

This is sqlalchemy.Column protocol, the real Column instance is injected as self parameter

Source code in fastapi_views/filters/resolvers/sqlalchemy.py
class Column(Protocol):
    """This is sqlalchemy.Column protocol, the real Column instance is injected as `self` parameter"""

    def in_(self, values: Sequence[Any]) -> Any:
        return self.in_(values)

    def not_in_(self, values: Sequence[Any]) -> Any:
        return self.not_in_(values)

    def is_(self, value: Any) -> Any:
        return self.is_(value)

    def is_not(self, value: Any) -> Any:
        return self.is_not(value)

    def like(self, value: str) -> Any:
        return self.like(f"%{value}%")

    def ilike(self, value: str) -> Any:
        return self.ilike(f"%{value}%")

    def is_null(self, value: bool) -> Any:  # noqa: FBT001
        return self.is_(None) if value else self.is_not(None)