如何在Django中实现类似/admin后台的数据查询表单 支持多选条目批量删除
实现方案
分两种场景适配,如果你本身用Django做技术栈,优先用原生能力实现成本最低;如果是其他技术栈,也可以参考Django Admin的底层逻辑自定义开发。
方案1:复用Django Admin原生能力(最快落地)
Django Admin本身就自带你需要的所有功能,不需要从零开发:
- 首先在对应应用的
admin.py文件中注册你要展示的数据库模型 - 给模型对应的Admin类配置展示参数、批量操作项即可,原生已经内置了批量删除能力,示例代码如下:
from django.contrib import admin from .models import 你要操作的模型类 @admin.register(你要操作的模型类) class 自定义Admin类(admin.ModelAdmin): # 配置列表页要展示的字段 list_display = ('id', '字段1', '字段2', '创建时间') # 开启批量操作,默认自带delete_selected批量删除能力 actions = ['delete_selected'] # 如果要新增自定义批量操作,直接写对应处理函数即可 def 自定义批量操作函数(self, request, queryset): # queryset就是用户选中的所有数据条目,直接写你要执行的逻辑即可 queryset.update(状态字段='处理后的值') 自定义批量操作函数.short_description = "自定义批量操作的展示名称"
配置完成后直接访问/admin/你的应用名/你的模型名小写/即可得到和参考示例完全一致的表单页面,自带多选、批量删除、分页、搜索、过滤等所有能力。
方案2:自定义实现(非Django栈/需要嵌入自有前端页面)
核心逻辑和Django Admin的实现逻辑一致,分前后端两部分开发即可:
后端逻辑
- 开发数据拉取接口,支持分页、搜索、过滤参数,从数据库查询对应数据返回给前端
- 开发批量操作接口,接收前端传入的选中条目ID数组,执行对应的删除/更新逻辑,操作前必须做好权限校验、参数合法性校验
前端逻辑
- 页面顶部放置操作栏,放置批量删除等操作按钮,默认禁用,只有用户选中至少1条数据时才启用
- 列表第一列放置复选框,支持全选、反选、单选能力
- 每条数据绑定对应的数据库主键ID,用户勾选时把对应ID存入选中数组
- 点击批量操作按钮时先弹出二次确认框,用户确认后把选中的ID数组传给后端对应接口,操作完成后刷新列表数据即可
注意:批量删除等高风险操作必须做二次确认,避免用户误操作;后端必须做好权限校验,防止用户操作不属于自己权限范围内的数据
内容的提问来源于stack exchange,提问作者Егор Егоров
相关产品推荐
相关产品推荐

