信号m2m_changed从未触发
问题描述:
class Lab(Model):
pass
class School(Model):
labs = ManyToManyField(Lab, related_name='schools')
def m2m_changed_labs(*args, **kwargs):
pass
m2m_changed.connect(m2m_changed_labs, sender=Lab.schools)
m2m_changed
信号从不触发,因此从不调用m2m_changed_labs
函数。我希望每次向实验室添加或移除学校时都会调用m2m_changed_labs
函数。信号m2m_changed从未触发
答
你试过sender=School.labs.through
?
,并与接收器的方法是这样的:
def m2m_changed_labs(sender, **kwargs): # notice sender instead of *args
print "signal received"
这是从docs本例中使用的发件人。
第一:AttributeError:'ManyRelatedObjectsDescriptor'对象没有'通'的属性,第二个也不会触发。 – user2282405
@ user2282405你可以尝试使用直接字段而不是相关名称吗?该文档明确指出发件人必须是:“中级m2m类”。 –
是的,我尝试过,但信号仍然没有触发。 :( – user2282405