diff --git a/sqlmodel/sql/expression.py b/sqlmodel/sql/expression.py index 92d772a883..8572034c82 100644 --- a/sqlmodel/sql/expression.py +++ b/sqlmodel/sql/expression.py @@ -18,7 +18,7 @@ TypeCoerce, WithinGroup, ) -from sqlalchemy.orm import InstrumentedAttribute, Mapped +from sqlalchemy.orm import InstrumentedAttribute, Mapped, QueryableAttribute from sqlalchemy.sql._typing import ( _ColumnExpressionArgument, _ColumnExpressionOrLiteralArgument, @@ -197,6 +197,15 @@ def within_group( def col(column_expression: _T) -> Mapped[_T]: - if not isinstance(column_expression, (ColumnClause, Column, InstrumentedAttribute)): + if not isinstance( + column_expression, + ( + ColumnClause, + Column, + InstrumentedAttribute, + QueryableAttribute, + ColumnElement, + ), + ): raise RuntimeError(f"Not a SQLAlchemy column: {column_expression}") return column_expression # type: ignore