I've just setup inheritance on my models, this makes much better sense for my project - everything inherits from Item class, with common elements. Then additional fields are added to child classes - Video, Podcast, Article etc...
Previously, upon Item.save() I had some pre_save and post_save signals setup which parsed/performed various tasks on my Item model objects.
 @receiver(pre_save, sender=Item)
def some_function(sender, instance, *args, **kwargs):
   print("I am working")
However, now that my objects are all subclassing from Item, those signals don't seem to be firing.
>Article.objects.get_or_create(title='some title')
 @receiver(pre_save, sender=Article)
def some_function(sender, instance, *args, **kwargs):
   print("I am not doing anything")
models.py
class Item(models.Model, AdminVideoMixin):
    title = models.TextField(max_length=2000)
    slug = models.SlugField(max_length=500, default='')
    link = models.URLField(max_length=200)
    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(get_random_string(length=5,allowed_chars='1234567890') + '-' + self.title)
        super().save(*args, **kwargs)
    def get_absolute_url(self):
        return reverse('curate:item_detail',args=[self.slug])
    def __str__(self):
        return self.title
class Video(Item):
    video_embed = EmbedVideoField(max_length=300)
    channel = models.TextField(max_length=500, blank=True
    def __str__(self):
        return self.title.upper()
class Article(Item):
    authors = models.CharField(max_length=10000)
    movies = models.TextField(max_length=10000)
    def __str__(self):
        return self.title.upper()
class Podcast(Item):
    authors = models.CharField(max_length=10000)
    itune_image = models.CharField(max_length=10000)
    owner_name = models.CharField(max_length=10000)
    def __str__(self):
        return self.title.upper()
class Episode(Item):
    authors = models.CharField(max_length=10000)
    itune_image = models.CharField(max_length=10000)
    owner_name = models.CharField(max_length=10000)
    enclosure_url = models.URLField(max_length=2000)
    owner = models.ForeignKey(Podcast, on_delete=models.CASCADE,max_length=2000)
    class Meta:
        pass
    def __str__(self):
        return self.title.upper()
I even stacked up the recievers as per this thread in case it's supposed to be triggered by the parent class as well as child class, but still it didn't save.
@receiver(post_save, sender=Video)
@receiver(post_save, sender=Item)
@receiver(post_save, sender=Article)
def some_function(sender, instance, *args, **kwargs):
    print('This still didn't fire')
Also tried to use post_save.connect(some_function, sender=Article) and I couldn't get signals to fire. I'm creating the objects with get_or_create(attributes)
Will I have to manually write something to go in afterwards and perform pre-post/saves or am I doing something wrong? I saw a solution but this suggest sending the signal to all child classes - no matter which - but this isn't what I want. I'd like to set model specific post_save / pre_save signals rather than a blanket rule.
 
    