python测试开发django-46.xadmin添加action动作
前言
Action插件在数据列表页面上提供数据选择功能。可以在Action之后专门处理所选数据。批量删除功能作为默认操作提供。
action文档
要启用Action,开发人员可以设置Model OptionClass的属性“actions”,这是一种列表类型。xadmin官方文档地址https://xadmin.readthedocs.io/en/latest/plugins.html
默认情况下,xadmin已启用DeleteSelectedAction,它提供了从列表视图中删除所选项目的选项。您还可以实现自定义的Action类,请参阅以下示例。
首先需要一个Action类,它是BaseActionView的子类。BaseActionView是以下的子类ModelAdminView:
from xadmin.plugins.actions import BaseActionView
class MyAction(BaseActionView):
action_name = "my_action" #: 相当于这个 Action 的唯一标示, 尽量用比较针对性的名字
description = _(u'Test selected %(verbose_name_plural)s') #: 描述, 出现在 Action 菜单中, 可以使用 ``%(verbose_name_plural)s`` 代替 Model 的名字.
model_perm = 'change' #: 该 Action 所需权限
# 而后实现 do_action 方法
def do_action(self, queryset):
# queryset 是包含了已经选择的数据的 queryset
for obj in queryset:
# obj 的操作
...
# 返回 HttpResponse
return HttpResponse(...)
然后在Model中的OptionClass上应用此Action
class MyModelAdmin(object):
actions = [MyAction, ]
案例操作
接下来有个需求:在Student列表页,我需要勾选不同的项,实现清空学生成绩的操作
在adminx.py同一目录新建一个adminx_actions.py文件
- action_name 这个Action的唯一标示
- description 出现在 Action 菜单中名称
- model_perm 该 Action 所需权限, 总共四种(‘add', 'change', 'delete', 'view‘)
- icon 显示图标
- do_action 执行的动作
# adminx_actions.py
from django.http import HttpResponse
from xadmin.plugins.actions import BaseActionView
class ClearAction(BaseActionView):
'''清空action'''
action_name = "clear_score" # 相当于这个Action的唯一标示, 尽量用比较针对性的名字
description = u'清空成绩 %(verbose_name_plural)s' # 出现在 Action 菜单中名称
model_perm = 'change' # 该 Action 所需权限
icon = 'fa fa-bug'
# 执行的动作
def do_action(self, queryset):
for obj in queryset:
# 需执行model对应的字段
obj.score = '0' # 重置score为0
obj.save()
# return HttpResponse
return None # 返回的url地址
接下来在adminx.py注册表的时候添加一项actions=[ClearAction,]
# adminx.py
import xadmin
from .models import Student
from .xadmin_action import ClearAction
class ControlStudent(object):
# 显示的字段
list_display = ['student_id', 'name', 'age', 'score',]
# 搜索条件
search_fields = ('name',)
# 每页显示10条
list_per_page = 10
actions = [ClearAction, ]
xadmin.site.register(Student, ControlStudent)
实现效果
打开学生表列表页,勾选需要清除的行,左下角执行动作里面有个“清除成绩的选项”

点击后页面会自动刷新,成绩变成0

python测试开发django-46.xadmin添加action动作的更多相关文章
- python测试开发django-36.一对一(OneToOneField)关系查询
前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...
- python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)
前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...
- python测试开发django-rest-framework-63.基于函数的视图(@api_view())
前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- Python测试开发-创建模态框及保存数据
Python测试开发-创建模态框及保存数据 原创: fin 测试开发社区 前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎 ...
- 《Python测试开发技术栈—巴哥职场进化记》—前言
写在前面 今年从4月份开始写一本讲Python测试开发技术栈的书,主要有两个目的,第一是将自己掌握的一些内容分享给大家,第二是希望自己能系统的梳理和学习Python相关的技术栈.当时我本来打算以故事体 ...
- python测试开发django-197.django-celery-beat 定时任务
前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...
随机推荐
- 基于Jenkins,docker实现自动化部署(持续交互)【转】
前言 随着业务的增长,需求也开始增多,每个需求的大小,开发周期,发布时间都不一致.基于微服务的系统架构,功能的叠加,对应的服务的数量也在增加,大小功能的快速迭代,更加要求部署的快速化,智能化.因此 ...
- codeforce 139E
成段更新+离散化才能过,数据好强.. 单点更新挂在了test27,下次做到成段更新再来做! /* 期望=存活概率*点权值/100 ans=sum(期望) 离散化树木权值,数轴统计累加可能倒下的树木概率 ...
- 步步为营-64-进程&线程
1 进程 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; us ...
- ORACLE 计算时间相减间隔
在Oralce中我发现有add_months函数,加天数N可以用如下方法实现,select sysdate+N from dual 在Oralce中我发现有add_months函数,加天数N可以用如下 ...
- 【APUE | 7】命令形参、函数
命令形参 命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数. 应当指出的是, argv[0]存储程序的名称,argv ...
- 阿里巴巴的26款超神Java开源项目
目录 1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba 2. JDBC 连接池.监控组件 Druid 3. Java 的 JSON 处理器 fastjson 4. 服务 ...
- 谈谈java多线程(一)
其实很早就想写一些java多线程方面的文章,只是奈何这东西看着简单,但要真要理解和正确使用可能还需要花费一定的精力,虽然平时的工作中会用到这方面的知识,可是更多的只是为了完成工作,至于详细的东西,也没 ...
- 【Java】 剑指offer(32) 从上往下打印二叉树
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 (一)从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺 ...
- PhotoShop 常用快捷键
PhotoShop: ctrl+j 复制一块图层ctrl+t 自由变换钢笔画出来的是路径不是选区,将路径转化成选区:ctrl+回车 alt+delete 直排文字蒙版ctrl+d 取消选择中括号可改变 ...
- Unity 之 添加背景音乐 以及 Slider控制
游戏音频分为背景音乐与环境音乐两种.Audio Clip(音频剪辑)有四种音乐格式.MP3:适合较长音频,作为背景音乐.Ogg:适合较长音频,作为背景音乐.Wav:适合较短音频,作为环境音乐.Ai ...