2013-05-15 9 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 'не имеет атрибута' through '', а второй никогда не запускается. – user2282405

+0

@ user2282405 Вы могли бы попробовать с прямым полем вместо связанного имени? В документах четко указано, что отправитель должен быть: «промежуточным классом m2m». –

+0

Да, я пробовал, но сигнал все еще не срабатывает. :( – user2282405