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

Программы на Python
Anonymous
Как использовать наследование модели Django с сигналами?

Сообщение Anonymous »

У меня есть несколько уровней наследования моделей в 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

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

Подробнее здесь: https://stackoverflow.com/questions/779 ... th-signals

Вернуться в «Python»