tortoise-orm
tortoise-orm copied to clipboard
on_delete=CASCADE doesn't fire pre_delete and post_delete signals
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 I think this is the expected behavior. The pre_delete
signal is registered on FileBaseModel
, not on Equipment
.