Djanto Singnals не срабатывает через панель администратора

У меня есть библиотека, которая синхронизирует некоторые модели с s3 bucket, поэтому, когда кто-то удаляет какой-то ряд, она должна получить сигнал и активировать функцию.

Вот функция:

@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()
    )

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

Прошу помочь разобраться, как активировать сигнал, когда я сделал несколько удалений через админ панель. Я не понял причину, по которой он не срабатывал.

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