我正在尝试使用Django-Activity-Stream设置类似 Facebook 的活动通知系统。
该库action
为创建动作提供了一个特殊的信号。根据文档,要触发这个action
,
您可以通过自定义表单或覆盖预定义的模型方法(例如
Model.save()
. 逻辑是简单地导入动作信号并将其与您的演员、动词、目标和任何其他重要参数一起发送。例如,action.send(request.user, verb='reached level 10')
但是,我有一个中间直通模型,action
必须从中发送信号。由于在使用Model.save()
M2Madd()
或remove()
方法时不会调用方法,所以我想知道是否有任何方法可以覆盖这些add()
和remove()
方法。
我曾考虑过使用 M2M 更改信号,但很快意识到我无法轻松访问 M2M 更改信号中的 request.user。(我需要始终知道谁 request.user 来生成任何有用的活动通知)。我担心在信号中访问用户实例(例如,通过创建单独的中间件来将 request.user 存储在线程中)可能成本高昂且不安全。如果这是一个可靠的选择,请告诉我。