При добавлении к запросу фильтрация по **distance_to__lt ** в моем запросе я получаю NULL < ?.
Код: Выделить всё
WHERE "user_id = ?) AS anon_2)) AND NULL < ? ORDER BY user.first_name ASCКод: Выделить всё
from fastapi_filter.contrib.sqlalchemy import Filter
class UserFilter(Filter):
# Other fields...
distance_to__lt: Optional[float] = None
order_by: list[str] = ['first_name']
class Constants(Filter.Constants):
model = User
Код: Выделить всё
from sqlalchemy.orm import query_expression
class User(Base):
__tablename__ = 'user'
# Other fields...
distance_to: Mapped[float] = query_expression()
Код: Выделить всё
from sqlalchemy.orm import with_expression
async def get_users(
session: AsyncSession, user_filter: UserFilter
)
query = (
select(User)
.join(User.location)
.options(
with_expression(
User.distance_to,
"some_calculation"
),
)
)
query = user_filter.filter(query)
query = user_filter.sort(query)
Есть ли способ динамически вычислять и фильтровать на основе distance_to, не сталкиваясь с этой проблемой?
Будем очень признательны за любые идеи или примеры!
Подробнее здесь: https://stackoverflow.com/questions/790 ... amic-field