gpt4 book ai didi

django - 如何使用通用函数处理多个模型发出的 Django 信号

转载 作者:行者123 更新时间:2023-12-03 17:43:17 26 4
gpt4 key购买 nike

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

模型.py

Class FirstModel(models.Model):
pass

Class AnotherModel(models.Model):
pass

Class YetAnotherModel(models.Model):
pass

对于我的 models.py 中的某些模型( FirstModel AnotherModel ),我需要编写一个函数来执行一些常见的保存后操作。

AFAIK,我可以编写两个处理函数来接收发出的信号并执行常见操作。

信号.py
@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

但是,我有兴趣了解任何更好的解决方案,使其像配置一样。

配置.py
MODELS_TO_BE_POST_SAVE_HANDLED = ['FirstModel', 'AnotherModel']

singals.py
@receiver(post_save, sender=MODELS_TO_BE_POST_SAVE_HANDLED)
def first_model_post_save_handler(sender, **kwargs):
pass

提前致谢 :)

最佳答案

您可以使用 post_save.connect()而不是 @receiver(post_save...) .

无论是作为

post_save.connect(model_post_save_handler, sender=FirstModel)
post_save.connect(model_post_save_handler, sender=SecondModel)

或作为

for model in MODELS_TO_BE_POST_SAVE_HANDLED:
post_save.connect(model_post_save_handler, sender=model)

也看看 signals documentation ,值得一读。

关于django - 如何使用通用函数处理多个模型发出的 Django 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com