在django模型状态修改时执行操作

在django模型状态修改时执行操作,django,django-models,django-signals,Django,Django Models,Django Signals,这问题我已经研究了好几天了。当对象的状态已更新时,如何执行特定操作 我得到了一个带有状态字段的订单django模型。当订单的状态从new变为processed时,我需要执行一些特定的操作 问题是,状态可以从任何地方更新:前端视图、管理模块、批量操作、管理命令等 另外,我只希望在保存订单后执行操作 似乎post_save信号可以工作,但我找不到一种方法来检测状态是否已更改,以及旧值是什么 我检查了房间 有什么想法吗?要检测在post\u save信号中哪些字段已更改,您需要记住模型实例的原始状态。

这问题我已经研究了好几天了。当对象的状态已更新时,如何执行特定操作

我得到了一个带有
状态
字段的
订单
django模型。当订单的状态从
new
变为
processed
时,我需要执行一些特定的操作

问题是,状态可以从任何地方更新:前端视图、管理模块、批量操作、管理命令等

另外,我只希望在保存订单后执行操作

似乎
post_save
信号可以工作,但我找不到一种方法来检测状态是否已更改,以及旧值是什么

我检查了房间


有什么想法吗?

要检测在
post\u save
信号中哪些字段已更改,您需要记住模型实例的原始状态。对此的一个答案是考虑到这一点,并指出,您可以在其中找到各种混合项,这些混合项允许您在保存时查找模型中的“脏”字段。

您看了吗?似乎有点过火了。另外«…它只能跟踪通过应用程序的web界面对模型实例所做的更改。»是的,但据我所知,在批量更新的情况下没有创建实例,因此脏字段策略不起作用,对吗?没错,
update
不会调用
save
也不会触发信号()。您可以在自定义管理器中覆盖
update
,或者直接使用SQL处理更新,例如触发器:(根本不涉及Django/Python)。