如何使用公共函数处理多个模型发出的Django信号

如何使用公共函数处理多个模型发出的Django信号,django,django-signals,Django,Django Signals,我想编写一个通用函数来处理Django为多个模型发出的post_save信号 型号.py Class FirstModel(models.Model): pass Class AnotherModel(models.Model): pass Class YetAnotherModel(models.Model): pass @receiver(post_save, sender=FirstModel) def first_model_post_save_handle

我想编写一个通用函数来处理Django为多个模型发出的post_save信号

型号.py

Class FirstModel(models.Model):
    pass

Class AnotherModel(models.Model):
    pass

Class YetAnotherModel(models.Model):
    pass
@receiver(post_save, sender=FirstModel)
def first_model_post_save_handler(sender, **kwargs):
    pass

@receiver(post_save, sender=AnotherModel)
def another_model_post_save_handler(sender, **kwargs):
    pass
MODELS_TO_BE_POST_SAVE_HANDLED = ['FirstModel', 'AnotherModel']
@receiver(post_save, sender=MODELS_TO_BE_POST_SAVE_HANDLED)
def first_model_post_save_handler(sender, **kwargs):
    pass
对于我的models.py中的一些模型(FirstModelAnotherModel),我需要编写一个函数,可以在保存后执行一些常见操作

好的,我可以编写两个处理函数来接收发出的信号并执行公共操作

信号.py

Class FirstModel(models.Model):
    pass

Class AnotherModel(models.Model):
    pass

Class YetAnotherModel(models.Model):
    pass
@receiver(post_save, sender=FirstModel)
def first_model_post_save_handler(sender, **kwargs):
    pass

@receiver(post_save, sender=AnotherModel)
def another_model_post_save_handler(sender, **kwargs):
    pass
MODELS_TO_BE_POST_SAVE_HANDLED = ['FirstModel', 'AnotherModel']
@receiver(post_save, sender=MODELS_TO_BE_POST_SAVE_HANDLED)
def first_model_post_save_handler(sender, **kwargs):
    pass
然而,我有兴趣知道任何更好的解决方案,使它像一个配置

配置.py

Class FirstModel(models.Model):
    pass

Class AnotherModel(models.Model):
    pass

Class YetAnotherModel(models.Model):
    pass
@receiver(post_save, sender=FirstModel)
def first_model_post_save_handler(sender, **kwargs):
    pass

@receiver(post_save, sender=AnotherModel)
def another_model_post_save_handler(sender, **kwargs):
    pass
MODELS_TO_BE_POST_SAVE_HANDLED = ['FirstModel', 'AnotherModel']
@receiver(post_save, sender=MODELS_TO_BE_POST_SAVE_HANDLED)
def first_model_post_save_handler(sender, **kwargs):
    pass
信号.py

Class FirstModel(models.Model):
    pass

Class AnotherModel(models.Model):
    pass

Class YetAnotherModel(models.Model):
    pass
@receiver(post_save, sender=FirstModel)
def first_model_post_save_handler(sender, **kwargs):
    pass

@receiver(post_save, sender=AnotherModel)
def another_model_post_save_handler(sender, **kwargs):
    pass
MODELS_TO_BE_POST_SAVE_HANDLED = ['FirstModel', 'AnotherModel']
@receiver(post_save, sender=MODELS_TO_BE_POST_SAVE_HANDLED)
def first_model_post_save_handler(sender, **kwargs):
    pass

提前感谢:)

您可以使用
post\u save.connect()
而不是
@receiver(post\u save…)

或者作为

post\u save.connect(model\u post\u save\u处理程序,sender=FirstModel)
post\u save.connect(model\u post\u save\u处理程序,sender=SecondModel)
或作为

对于要处理的模型中的模型:
post\u save.connect(模型\u post\u save\u处理程序,发送方=模型)
还可以看一看,这是值得一读的