如何在监听`post_save`事件时对不同的模型更新进行分组
如何在监听`post_save`事件时对不同的模型更新进行分组
我在我的应用程序中有一堆模型,我使用post_save
来监听其变化。此外,这些模型都有一个updated_at
字段,它是一个时间戳,在每次保存操作时都会更新。
假设有一个模型Question
和一个与之有一对多关系的模型Answer
,以下情况会发生:
如果我添加一个Answer
,那么会为两个模型触发post_save
(因为Question
上的时间戳更新)。在我的使用场景中,我需要知道Question
本身是否被修改(除了updated_at
),或者post_save
只是因为添加了一个Answer
而被触发。
有没有一种简洁的方法来实现这个?
问题的原因是在使用post_save监听模型更新时,post_save事件默认不会自动接收update_fields参数,需要手动传递。解决方法是根据stackoverflow上的回答,在监听函数中将update_fields参数传递给post_save事件。
具体解决方法如下:
(post_save, sender=Question) def tri_qu(sender, update_fields, created, instance, **kwargs): if not created and update_fields and update_fields == ['updated_at']: # ... post_save where triggered, because of answer was added
以上就是解决问题的方法。