Django pre_能否保存所有派生类的信号工作

Django pre_能否保存所有派生类的信号工作,django,django-signals,Django,Django Signals,我有一个模型类“Action”,它被其他几个类扩展了。我是django新手,假设如果调用pre_save.connect(actionFunc,sender=Action),actionFunc将在Action类中的save方法被调用时(包括任何派生类)被调用 我的观察是,只有当实例与Sender中定义的类类型直接匹配时,才会触发此函数。还有什么方法可以让它同时接收所有派生动作实例的信号吗?没有,您必须调用pre\u save.connect多次 但是,您可以使用python获取扩展您感兴趣的类

我有一个模型类“Action”,它被其他几个类扩展了。我是django新手,假设如果调用pre_save.connect(actionFunc,sender=Action),actionFunc将在Action类中的save方法被调用时(包括任何派生类)被调用


我的观察是,只有当实例与Sender中定义的类类型直接匹配时,才会触发此函数。还有什么方法可以让它同时接收所有派生动作实例的信号吗?

没有,您必须调用
pre\u save.connect
多次

但是,您可以使用python获取扩展您感兴趣的类的所有类,并在pre_save connect语句上循环

例如,如果
操作
的扩展类都在给定文件中,则可以执行以下操作:

global_dict = globals().copy()
[el for el in global_dict.values() if getattr(el,'__base__',None)==Action]

您可以做的一件事是修改django中的信号发送器,这样它就不会与特定类型进行匹配

if isinstance(sender, filter):
    send_signal()

(伪代码)

无需多次连接,只需连接一次,无需指定发件人,即可在receiver函数中检查发件人IsubClass()