Django m2m_changed не запускается с пользовательской сквозной моделью

#django #m2m

#django #m2m

Вопрос:

 class SparePart(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField(blank=True, null=True)

class SparePartOrderRelation(models.Model):
    sparepart = models.ForeignKey(SparePart)
    order = models.ForeignKey('SparePartOrder')

class SparePartOrder(models.Model):
    spareparts = models.ManyToManyField(SparePart, through=SparePartOrderRelation)

def signaltest(**kwargs):
    print kwargs['action']

m2m_changed.connect(signaltest, sender=SparePartOrder.spareparts.through, weak=False, dispatch_uid='signaltest')
  

(упрощенные модели для наглядности)

Почему m2m_changed сигнал не отправляется и signaltest не вызывается? когда я сохраняю SparePartOrder ? Я попытался sender= заменить почти каждой комбинацией (возможных) ссылок на модель m2m ( SparePartOrder.spareparts и SparePartOrderRelation т.д.)

Помощь приветствуется!

Приветствия

Комментарии:

1. Как насчет изменения подписи на def signaltest(sender, instance, *args, **kwargs): ?

2. @karthikr, к сожалению, ничего не меняет. Есть ли способ отладки сигналов Django?

3. Забавно, что вы спрашиваете — я отлаживаю django-сигнал, с которым я сталкиваюсь в своем коде, пока мы говорим 🙂 Я использую import pdb;pdb.set_trace() и перемещаюсь шаг за шагом.