django-typed-models icon indicating copy to clipboard operation
django-typed-models copied to clipboard

signals for derived class have base class as source when cascading

Open niki-sp opened this issue 9 years ago • 3 comments

Given this doc-item hierarchy:

class BaseDoc(TypedModel):
   ...
class BaseDocItem(TypedModel):
   doc = models.ForeignKey(BaseDoc)
class MyDoc(BaseDoc):
    ...
class MyItem(BaseDocItem):
    ...

and post_delete signal handler for MyItem then: item.delete() fires post_delete signal with source=MyItem but doc.delete() fires post_delete signal with source=BaseDocItem expected result: without TypedModel post_delete is always fired with source=MyItem

niki-sp avatar Apr 11 '16 14:04 niki-sp

Interesting. See #1 which could be related.

Could you post the code that connects the signals?

craigds avatar Apr 12 '16 00:04 craigds

@receiver(post_delete, sender=BaseDocItem) # extra registration
@receiver(post_delete, sender=MyItem)
def handler(sender, instance, **kwa):
    ...

i am using extra registration line as workaround

niki-sp avatar Apr 12 '16 08:04 niki-sp

I have working post_save signal handler for MyDoc and MyItem.

niki-sp avatar Apr 12 '16 08:04 niki-sp