Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2012 14:53:40

Gorazio
От:
Зарегистрирован: 2011-11-20
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Django signals

Есть модель Students, к ней хочу приклеить обработчик сигнала создания записи. Вот что у меня получилось:

#models.py
...
class Students(models.Model):
fio = models.CharField(max_length=50)
bdate = models.DateField()
tickno = models.CharField(max_length=10)
group = models.ForeignKey(Groups,blank=True, null=True,related_name='gruppa')
def __unicode__(self):
return self.fio

class ChangeLog(models.Model):
model = models.CharField(max_length=15,blank=True, null=True)
action = models.CharField(max_length=25,blank=True, null=True)

def ModelChangeLog(sender, instance, signal, *args, **kwargs):
if 'created' in kwargs:
if kwargs['created']:
m = ChangeLog(model = sender.__name__,
action = "Создание записи %s" % instance.id)
m.save()
post_save.connect(ModelChangeLog, sender=Students)
Немогу понять почему ModelChangeLog срабатывает дважды для каждой записи(каждый раз при создании новой записи в модели Students - создается две записи в ChangeLog):
>>>q = ChangeLog.objects.all()
... for i in q:
... print i.model, i.action
...
Students Создание записи 38
Students Создание записи 38
Подскажите пожалуйста что не так, и если можно - киньте линк где про сигналы почитать.
Заранее спасибо!



Офлайн

#2 Янв. 23, 2012 15:32:47

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

Django signals

Офлайн

#3 Янв. 23, 2012 19:41:16

Gorazio
От:
Зарегистрирован: 2011-11-20
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Django signals

mks
Вероятно это вам поможет: https://docs.djangoproject.com/en/1.3/topics/signals/#preventing-duplicate-signals
Спасибо за линк! Хотя я уже раз 10 читал раздел с сигналами, только пройдя по вашей ссылке я наконец-то в этом разобрался =)



Отредактировано (Янв. 23, 2012 19:50:43)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version