dmnBrest
@dmnBrest
Salesforce for money. Python, Go, Ruby for soul.

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

Привет.
Подскажите простейшее решение как в событии before_update или after_update получить предыдущие значения атрибутов? Не могу найти в интернете нормальных примеров.
Знаю что в документации для этого используют событие set для атрибута, но это не подходит для ситуации (или я не понял как использовать) если мне надо перед вставкой в базу проверить как изменились сразу несколько атрибутов, а не один. В Rails, например, для этого можно использовать <атрибут>_changed? <атрибут>_was. Как это делается в SQLAlchemy что-то я не нахожу.
Спасибо.
  • Вопрос задан
  • 2343 просмотра
Пригласить эксперта
Ответы на вопрос 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']
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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