我正在研究Django信号,以便在Postgres数据库发生任何更改时在Redis中处理数据。但是,我无法向信号接收器发送自定义参数。我已经经历了很多问题,但我无法理解如何发送额外的自定义参数到信号接收器。
通常我会的,

@receiver(post_save, sender=post_data)
def addToRedis(sender, instance, **kwargs):

但我想这么做,
@receiver(post_save, sender=post_data)
def addToRedis(sender, instance, extra_param=extra_param_data **kwargs):
  # Get `extra_param`

在这里,我想读取额外的参数来将数据存储在Redis中。
我正在使用Django Rest框架。post_save在serializer.save()之后直接调用
如果有人能帮我解决这个问题,那就太好了。

最佳答案

可以将信号中的任何其他参数作为关键字参数发送:

@receiver(post_save, sender=post_data)
def addToRedis(sender, instance, **kwargs):
    # kwargs['extra_param']

如何发送:
my_signal.send(sender=self.__class__, extra_param='...')

如果您没有访问signal send函数的权限(例如REST框架内部),则始终可以使用custom signal

09-27 01:55
查看更多