2013-05-15 43 views
0
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从未触发

回答

0

你试过sender=School.labs.through

,并与接收器的方法是这样的:

def m2m_changed_labs(sender, **kwargs): # notice sender instead of *args 
    print "signal received" 

这是从docs本例中使用的发件人。

+0

第一:AttributeError:'ManyRelatedObjectsDescriptor'对象没有'通'的属性,第二个也不会触发。 – user2282405

+0

@ user2282405你可以尝试使用直接字段而不是相关名称吗?该文档明确指出发件人必须是:“中级m2m类”。 –

+0

是的,我尝试过,但信号仍然没有触发。 :( – user2282405