Сигнал django post_save отправляет устаревшие встроенные наборы форм

Примите во внимание следующее:

class OrderForm(models.Model):
    title = models.CharField(max_length=100)
    desc  = models.TextField()


class OrderFormLine(models.Model):
    order = models.ForeignKey(OrderForm)
    lagel = models.CharField(max_length=100)
    qty   = models.IntegerField(...)
    price = models.FloatField(...)

Теперь я хочу отправить электронное письмо с деталями формы заказа всякий раз, когда кто-то создает или изменяет форму.

Пока никаких ракетостроений ... давайте просто воспользуемся сигналом post_save;

post_save.connect(email_notify, sender=OrderForm)

Но там ' Одна крошечная проблема: объект OrderForm, переданный в email_notify, обновляется новыми данными, как и ожидалось, но не соответствующими элементами OrderFormLine.

Я попытался переопределить методы сохранения в админке И в модели, я попытался сохранить объект, форму и его отношение перед передачей их обработчику уведомлений, ничего не работает.

Я ' Я знаю, что могу прикрепить сигнал post_save к модели OrderItem, но тогда электронное письмо будет отправлено для каждого элемента.

Помогите, я на грани безумия.

ОБНОВЛЕНИЕ :

Найдено простое и надежное решение

Краткая история:

def email_notify_orderform(sender, **kwargs):
    instance = kwargs['instance']
    ct = ContentType.objects.get_for_model(OrderForm)
    if ct.id == instance.content_type.id:
        print instance.is_addition()
        print instance.is_change()
        print instance.is_deletion()
        print instance.change_message
        print instance.action_time
        print instance.get_edited_object().total() # BINGO !
post_save.connect(email_notify_orderform, sender=LogEntry)

11
задан h3. 7 November 2010 в 18:34
поделиться