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.
Прошу помочь разобраться, как активировать сигнал, когда я сделал несколько удалений через админ панель. Я не понял причину, по которой он не срабатывал.