我几天都被困在这个问题上了。如何在更新对象的状态时执行特定操作?
我有一个Order
django模型,其中包含status
字段。当订单状态从new
变为processed
时,我需要执行一些特定操作。
问题是,状态可以从任何地方更新:前端视图,管理模块,批量操作,管理命令等。
另外,我只希望在保存订单后执行操作。
似乎post_save
信号可以正常工作,但我找不到一种方法来检测状态是否已经改变,以及旧值是什么。
我检查了django fsm, but it's clearly not the way to go。
有什么想法吗?
答案 0 :(得分:1)
要检测post_save
信号中哪些字段已更改,您需要记住模型实例的原始状态。 Actions triggered by field change in Django的一个答案是考虑到这一点,并指向Dirty fields in django,您可以在其中找到各种混音,以便您在保存时找到模型中的“脏”字段。