【发布时间】:2016-01-12 10:14:35
【问题描述】:
我有这个:
class PersonneRelation(models.Model):
#blabla
pass
@receiver(post_save, sender=PersonneRelation)
def signal_receiver(sender, **kwargs):
print('***'*5)
print(sender)
这很好......直到我添加另一个这样的接收器:
@receiver(post_save, sender=PersonneTravel)
def signal_receiver(sender, **kwargs):
created = kwargs['created']
obj = kwargs['instance']
print('***'*5)
print(sender)
print(created)
它不是同一个发送者,所以它应该区分这两个信号......但是一旦我添加了前一个信号,它似乎会覆盖第一个信号,并且不再调用第一个信号。我错过了什么?
【问题讨论】:
-
您是否使用相同的方法名称定义了两者?..(在同一个文件中?)
-
...这是问题所在。我可以请您回答以便我检查您的回答是否有效吗?任何像我这样有信号的新手都应该被警告“每个信号处理有一个不同的名字”......
-
Olivier Pons,我现在没有对此的引用,但 python 将所有对象存储为字典,我很确定它也包括方法,因此如果你用相同的名称重新定义它它会覆盖密钥
-
我习惯了 C,你只能在同一个文件中定义一个同名的函数。与 C++ 相同。与 Java 相同。与 LUA 相同。与德尔福相同。与 ADA 相同。与所有“干净”的语言相同。这是一种奇怪的行为,恕我直言,不应该被允许。
-
这就是编译语言与解释语言的乐趣:)
标签: django django-models