Consolidating multiple post_save signals with one receiver

后端 未结 4 918
旧时难觅i
旧时难觅i 2020-12-15 02:37

So I read the Django source code (post 1.5) that you can now register multiple multiple signals to a receiver function:

def receiver(signal, **kwargs):
    \         


        
4条回答
  •  再見小時候
    2020-12-15 03:17

    def receiver_with_multiple_senders(signal, senders, **kwargs):
        """
        Based on django.dispatch.dispatcher.receiver
    
        Allows multiple senders so we can avoid using a stack of
        regular receiver decorators with one sender each.
        """
    
        def decorator(receiver_func):
            for sender in senders:
                if isinstance(signal, (list, tuple)):
                    for s in signal:
                        s.connect(receiver_func, sender=sender, **kwargs)
                else:
                    signal.connect(receiver_func, sender=sender, **kwargs)
    
            return receiver_func
    
        return decorator
    

提交回复
热议问题