Задать вопрос
dmnBrest
@dmnBrest
Salesforce for money. Python, Go, Ruby for soul.

Как в SqlAlchemy в event получить старые значения атрибутов?

Привет.
Подскажите простейшее решение как в событии before_update или after_update получить предыдущие значения атрибутов? Не могу найти в интернете нормальных примеров.
Знаю что в документации для этого используют событие set для атрибута, но это не подходит для ситуации (или я не понял как использовать) если мне надо перед вставкой в базу проверить как изменились сразу несколько атрибутов, а не один. В Rails, например, для этого можно использовать <атрибут>_changed? <атрибут>_was. Как это делается в SQLAlchemy что-то я не нахожу.
Спасибо.
  • Вопрос задан
  • 2354 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
dmnBrest
@dmnBrest Автор вопроса
Salesforce for money. Python, Go, Ruby for soul.
Вопрос решился немного в обход - делаю проверку прямо в контроллере (бизнес логике). В 99% случаев на входе имею form с новыми данными и саму модель с данными из базы. Вот их и сравниваю. Не думал что эта такая проблема для данной ORM. Получается что с SQLAlchemy на выходе имеем толстый контроллер и тонкую модель.

UPD: вот нашел наконец-то ответ. Вообще первый раз встречаю в ORM чтобы этот вопрос был настолько запущен.
hist = attributes.get_history(self, 'elements')
получаем вот такой объект
added=['new value'], unchanged=(), deleted=[u'previous value']
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы