Как я могу использовать минимальную функцию с @hybrid_method?

#python #sqlalchemy

#python #sqlalchemy

Вопрос:

Я пытаюсь вернуть результат a hybrid_method из моего запроса:

 session.query(Table1.weight_time(date, Table2.daily_weight))
  

Где date находится datetime объект и Table2.daily_weight является следующим:

 @hybrid_method
def weight_time(self, curr_match_date, daily_weight):
    no_days = curr_match_date - self.date_time_inferred
    return min(daily_weight ** no_days, daily_weight)
  

Однако я получаю следующую ошибку:

 Exception has occurred: TypeError
Boolean value of this clause is not defined
  

Если я отключусь min() , я получу другую ошибку:

 Exception has occurred: TypeError
unsupported operand type(s) for ** or pow(): 'InstrumentedAttribute' and 'BinaryExpression'
  

Я явно пытаюсь заставить взаимодействовать два объекта, которые не нравятся друг другу 🙂

Я попытался изменить запрос на:

 session.query(Table1.weight_time(date, 2))
  

Но я по-прежнему получаю те же ошибки, что и раньше.

Как я мог это решить?

Комментарии:

1. @Carcigenicate — да, я это понимаю. Я просто не знаю, как преобразовать их в правильный тип!

2. Похоже, вы передаете в метод атрибуты столбца модели, а не значения?

3. @snakecharmerb — привет! Я пытаюсь вернуть результат hybrid_method из моего запроса. Итак, что-то вроде qry = session.query(Table.weight_time(curr_match_date) where curr_match_date является datetime объектом

4. На самом деле — подождите. Запутался. Позвольте мне кое-что проверить

5. Исходная ошибка не была исправлена! Обновлено