Как использовать наследование модели Django с сигналами?

У меня есть несколько уровней наследования моделей в Django:

class WorkAttachment(models.Model):
    """ Abstract class that holds all fields that are required in each attachment """
    work            = models.ForeignKey(Work)
    added           = models.DateTimeField(default=datetime.datetime.now)
    views           = models.IntegerField(default=0)

    class Meta:
        abstract = True


class WorkAttachmentFileBased(WorkAttachment):
    """ Another base class, but for file based attachments """
    description     = models.CharField(max_length=500, blank=True)
    size            = models.IntegerField(verbose_name=_('size in bytes'))

    class Meta:
        abstract = True


class WorkAttachmentPicture(WorkAttachmentFileBased):
    """ Picture attached to work """
    image           = models.ImageField(upload_to='works/images', width_field='width', height_field='height')
    width           = models.IntegerField()
    height          = models.IntegerField()

Есть много разных моделей, унаследованных от WorkAttachmentFileBased и WorkAttachment . Я хочу создать сигнал, который обновлял бы поле attachment_count для родительской работы при создании вложения. Было бы логично предположить, что сигнал, сделанный для родительского отправителя ( WorkAttachment ), будет работать и для всех унаследованных моделей, но это не так. Вот мой код:

@receiver(post_save, sender=WorkAttachment, dispatch_uid="att_post_save")
def update_attachment_count_on_save(sender, instance, **kwargs):
    """ Update file count for work when attachment was saved."""
    instance.work.attachment_count += 1
    instance.work.save()

Есть ли способ заставить этот сигнал работать для всех моделей, унаследованных от WorkAttachment ?

Python 2.7, Django 1.4 pre-alpha

P.S. Я попробовал одно из решений, которые нашел в сети , но оно не помогло мне.

40
задан hichris123 15 May 2016 в 02:13
поделиться