如何使用公共函数处理多个模型发出的Django信号
我想编写一个通用函数来处理Django为多个模型发出的post_save信号 型号.py如何使用公共函数处理多个模型发出的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
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中的一些模型(FirstModel,AnotherModel),我需要编写一个函数,可以在保存后执行一些常见操作
好的,我可以编写两个处理函数来接收发出的信号并执行公共操作
信号.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处理程序,发送方=模型)
还可以看一看,这是值得一读的