Имеются модели:
class Model1(models.Model):
pass

class Model2(models.Model):
model1 = models.ForeignKey(Model1)

class Model3(models.Model):
model2 = models.ForeignKey(Model2)
Я хочу сделать, чтобы Model2 нельзя удалить, если есть Model3 ссылающиеся на данную модель, и соответственно нельзя удалить Model1, если есть Model2 ссылающиеся на Model1
написал обработчики сигналов:
def model1_delete_handler(sender, instance, **kwargs):
if instance.model2_set.all().count() != 0:
...

def model2_delete_handler(sender, instance, **kwargs):
if instance.model3_set.all().count() != 0:
...

signals.pre_delete.connect(model1_delete_handler, sender=Model1, dispatch_uid = 'model1_delete')
signals.pre_delete.connect(model2_delete_handler, sender=Model2, dispatch_uid = 'model2_delete')
Проблема в том, что почему-то при удалении объектов Model1 сигнал не вызывается, а вызывается только model2_delete_handler. Если закоментировать регистрацию обработчика model2_delete_handler, то model1_delete_handler вызывается. Не понимаю что не так. Раньше подобное было с другими моделями (тоже сигнал pre_delete) но каким-то магическим образом все стало работать, при чем я ничего не менял.
Если кто сталкивался, помогите, срочно надо