Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Проблема с сигналами, не вызывается pre_delete [RSS Feed]

#1 Июнь 9, 2010 07:39:35

svas
От:
Зарегистрирован: 2010-01-27
Сообщения: 239
Репутация: +  9  -
Профиль   Отправить e-mail  

Проблема с сигналами, не вызывается pre_delete

Имеются модели:

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) но каким-то магическим образом все стало работать, при чем я ничего не менял.
Если кто сталкивался, помогите, срочно надо



Офлайн

  • Начало
  • » Django
  • » Проблема с сигналами, не вызывается pre_delete[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version