跳转至

批量删除钩子函数

概述

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

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

基本用法

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

class YourModelAdmin(ModelAdmin):
    async def handle_batch_delete(self, request: Request, ids: list) -> tuple[bool, str, int]:
        """
        处理批量删除操作的钩子方法
        Args:
            request: Request对象
            ids: 要删除的记录ID列表
        Returns:
            tuple[bool, str, int]: (是否成功, 消息, 删除成功数量)
        """
        try:
            deleted_count = 0
            for id in ids:
                try:
                    obj = await self.get_object(id)
                    if obj:
                        # 在这里可以添加自定义逻辑
                        # 例如:软删除
                        obj.is_deleted = True
                        await obj.save()

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

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

                        deleted_count += 1
                except Exception as e:
                    print(f"删除记录 {id} 失败: {str(e)}")
                    continue

            if deleted_count > 0:
                return True, f"成功删除 {deleted_count} 条记录", deleted_count
            return False, "没有记录被删除", 0

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

参数说明

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

返回值

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

  • bool: 表示操作是否成功
  • str: 操作结果消息
  • int: 成功删除的记录数量