Выполнить действие при изменении статуса модели django - PullRequest
0 голосов
/ 06 февраля 2012

Я застрял на этой проблеме в течение нескольких дней. Как я могу выполнить определенное действие, когда статус объекта был обновлен?

У меня есть Order модель Джанго с полем status. Когда статус заказа меняется с new на processed, мне нужно выполнить некоторые конкретные действия.

Дело в том, что статус может быть обновлен из любого места: внешний вид, модуль администратора, массовое действие, команда управления и т. Д.

Кроме того, я хочу, чтобы действие выполнялось только после сохранения заказа.

Кажется, сигнал post_save мог бы работать, но я не могу найти способ определить, изменился ли статус, и каково старое значение.

Я проверил Джанго ФСМ, но это явно не тот путь, по которому .

Есть идеи?

1 Ответ

1 голос
/ 06 февраля 2012

Чтобы определить, какие поля изменились в сигнале post_save, необходимо как-то запомнить исходное состояние экземпляра модели. Один ответ на Действия, вызванные изменением поля в Django , учитывает это и указывает на Грязные поля в Django , где вы можете найти различные дополнения, которые позволят вам найти «грязный» "поля в вашей модели при сохранении.

...