tortoise-orm icon indicating copy to clipboard operation
tortoise-orm copied to clipboard

on_delete=CASCADE doesn't fire pre_delete and post_delete signals

Open denis240997 opened this issue 1 year ago • 1 comments

tortoise-orm==0.19.3

Setup

class FileBaseModel(models.Model):
    host = fields.ForeignKeyField(
        "models.Equipment", related_name="files", on_delete=fields.CASCADE, null=True
    )

@pre_delete(FileBaseModel)
async def equipment_media_pre_delete(
    sender: Type[FileBaseModel],
    file: FileBaseModel,
    using_db: Optional[BaseDBAsyncClient],
) -> None:
    log.info(f"pre_delete signal for file {file}")

Code

equipment = await Equipment.create(...)

file = await FileBaseModel.create(host=equipment)
await file.delete()
#### INFO:     pre_delete signal for file <FileBaseModel>

file = await FileBaseModel.create(host=equipment)
await equipment.delete()
#### Nothing happens! No logs...

denis240997 avatar Aug 02 '23 18:08 denis240997

@denis240997 I think this is the expected behavior. The pre_delete signal is registered on FileBaseModel, not on Equipment.

Abdeldjalil-H avatar Oct 11 '23 19:10 Abdeldjalil-H