LINUX.ORG.RU

SQLAlchemy и вычисление дат

 , , ,


0

1

У меня есть модель (я использую SQLAlchemy-расширение для Flask). В ней есть поле даты начала и поле продолжительности. Я хочу выбрать те записи, которые удовлетворяют такому условию: время_начала > сегодня > время_начала+продолжительность. Я хотел сделать hybrid_property у модели:

class MyModel(db.Model):
    id = ...
    start_date = ...
    duration = ...

    @hybrid_property
    def end_date(self):
        return start_date + datetime.timedelta(days=self.duration)
но self.duration имеет тип InstrumentedAttribute. Как мне получить дату конца, если известна дата начала и продолжительность?


Ответ на: комментарий от hatefu1_dead

а hybrid_property у тебя, наверное, не работает из-за того, что ты в нем смешиваешь чисто питоньи объекты и объекты sqlalchemy, так что sqlalchemy не может построить правильное sql-выражение. ошибка с InstrumentedAttribute отсюда же - когда алхимия создает sql, в hybrid_property аргумент self будет классом модели, соответственно datetime.timedelta не работает.

Так что тебе нужно datetime.timedelta заменить на функцию из sql, тогда, может, заработает.

И еще, ты, наверное, опечатался, но в методе у тебя написано start_date, а должно быть self.start_date.

hatefu1_dead
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.