Срабатывает ли сигнал от родительской модели при изменении дочерней модели?

Я разработал пользовательскую библиотеку для синхронизации некоторых моделей. Итак, есть родительская модель, называемая SyncModel в этой библиотеке, которая имеет несколько дочерних моделей в моем приложении Django.

В этой библиотеке есть функция приемника, которая активируется, когда кто-то делает удаление. Вот эта функция:

@receiver(post_delete)
def on_object_deletion(sender, instance, **kwargs):
    """Upload deleted object to cloud if it is part of synced model"""

    deletion_time = datetime.datetime.now()

    # Retrieve the metadata (app and model name) for the model
    contenttype = ContentType.objects.get_for_model(model=instance)

    # Skip unnecessary database lookup (never syncs its own models)
    if contenttype.app_label == "lakehouse_sync":
        return

    syncmodel = SyncModel.try_retrieve_model(contenttype.app_label, contenttype.model)
    if not syncmodel:
        return

    # Raise exception if the instance is not BaseSyncModel.
    # Should be caught during clean() though.
    if not isinstance(instance, BaseSyncModel):
        raise Exception("Cannot sync a model that does not inherit BaseSyncModel")

    # Manually update the timestamp so the lakehouse can merge data
    instance.updated_at = deletion_time

    # Write the serialized object to the cloud
    blacklist = syncmodel.get_blacklist()
    serialized = Serializer.serialize_object(instance, blacklist)

    CloudActions.write_delete_file(
        contenttype.app_label, contenttype.model, serialized.getvalue()
    )

А в файле apps.py я добавил этот приемник:

    def ready(self):
        """Import signals"""
        from lakehouse_sync.core import delete_action
        post_delete.connect(delete_action, sender=SyncModel, dispatch_uid=model.__name__)
        print('deleting')
        for model in SyncModel.__subclasses__():
            post_delete.connect(delete_action, sender=model, dispatch_uid=model.__name__)

Моя проблема связана с дочерними моделями, потому что когда я удаляю строку из дочерних моделей через панель администратора, сигнал не срабатывает

Я понятия не имею, как решить эту проблему.

Вернуться на верх