如何在监听`post_save`事件时对不同的模型更新进行分组

6 浏览
0 Comments

如何在监听`post_save`事件时对不同的模型更新进行分组

我在我的应用程序中有一堆模型,我使用post_save来监听其变化。此外,这些模型都有一个updated_at字段,它是一个时间戳,在每次保存操作时都会更新。

假设有一个模型Question和一个与之有一对多关系的模型Answer,以下情况会发生:

如果我添加一个Answer,那么会为两个模型触发post_save(因为Question上的时间戳更新)。在我的使用场景中,我需要知道Question本身是否被修改(除了updated_at),或者post_save只是因为添加了一个Answer而被触发。

有没有一种简洁的方法来实现这个?

0
0 Comments

问题的原因是在使用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

以上就是解决问题的方法。

0