跳转至

删除钩子函数

概述

删除钩子函数允许您在模型管理类中自定义删除操作的处理逻辑。通过重写handle_delete方法,您可以:

  • 实现软删除
  • 添加删除前的数据验证
  • 处理关联数据
  • 记录删除日志

基本用法

在您的模型管理类中重写handle_delete方法:

class YourModelAdmin(ModelAdmin):
    async def handle_delete(self, request: Request, object_id: str) -> tuple[bool, str]:
        """
        处理删除操作的钩子方法
        Args:
            request: Request对象
            object_id: 记录ID
        Returns:
            tuple[bool, str]: (是否成功, 消息)
        """
        try:
            obj = await self.get_object(object_id)
            if not obj:
                return False, "记录不存在"

            # 在这里可以添加自定义逻辑
            # 例如:软删除
            obj.is_deleted = True
            await obj.save()

            # 或者执行物理删除
            # await obj.delete()

            # 这里可以进行其他操作,比如:
            # - 检查关联数据
            # - 记录删除日志
            # - 发送通知

            return True, "删除成功"

        except Exception as e:
            print(f"删除处理错误: {str(e)}")
            return False, f"删除失败: {str(e)}"

参数说明

  • request: Robyn的Request对象,包含当前请求的所有信息
  • object_id: 要删除的记录ID

返回值

该方法需要返回一个元组,包含:

  • bool: 表示操作是否成功
  • str: 操作结果消息