Skip to content

Predicates

Column

Column(name: str, model: type[SupabaseModel])

Bases: Generic[T]

Typed column reference. Operators build :class:Predicate nodes.

Don't construct directly — access via Model.f.<column>.

Source code in src/supabase_orm/_predicates.py
def __init__(self, name: str, model: type[SupabaseModel]) -> None:
    self._name = name
    self._model = model

is_null

is_null() -> Predicate

Sugar for col.is_(None) — checks IS NULL.

Source code in src/supabase_orm/_predicates.py
def is_null(self) -> Predicate:
    """Sugar for ``col.is_(None)`` — checks ``IS NULL``."""
    return self._atom("is_", None)

asc

asc(*, nulls: NullsPosition | None = None) -> 'Order'

Order by this column ascending. nulls= controls null position.

Source code in src/supabase_orm/_predicates.py
def asc(self, *, nulls: NullsPosition | None = None) -> "Order":
    """Order by this column ascending. ``nulls=`` controls null position."""
    return Order(self._name, desc=False, nulls=nulls)

desc

desc(*, nulls: NullsPosition | None = None) -> 'Order'

Order by this column descending. nulls= controls null position.

Source code in src/supabase_orm/_predicates.py
def desc(self, *, nulls: NullsPosition | None = None) -> "Order":
    """Order by this column descending. ``nulls=`` controls null position."""
    return Order(self._name, desc=True, nulls=nulls)

Predicate

Composable boolean expression that compiles to a PostgREST predicate.

Build with :class:Column operators (== / >= / .in_() / .like() / ...) and combine with | / & / ~::

(Pet.f.species == "cat") | (Pet.f.age >= 5)
~(Pet.f.adopted == True)

Pass to :meth:QueryBuilder.or_ or :meth:QueryBuilder.not_.

Order dataclass

Order(
    column: str,
    desc: bool = False,
    nulls: NullsPosition | None = None,
)

A single ORDER BY clause.

Build via Pet.f.<col>.asc() / .desc() or pass strings to :meth:QueryBuilder.order_by.

parse classmethod

parse(spec: str) -> 'Order'

Parse Django-style "-col" shorthand; bare "col" is ascending.

Source code in src/supabase_orm/_predicates.py
@classmethod
def parse(cls, spec: str) -> "Order":
    """Parse Django-style ``"-col"`` shorthand; bare ``"col"`` is ascending."""
    spec = spec.strip()
    if spec.startswith("-"):
        return cls(spec[1:], desc=True)
    return cls(spec, desc=False)