Django给admin添加Action的步骤详解


Posted in Python onMay 01, 2019

前言

django 的 admin 是个非常方便的admin portal,可以根据自己的需要重写.

在使用Django自带的admin后台的时候,他提供了一些默认的指令可以对数据进行操作, 比如批量删除,修改等

Django给admin添加Action的步骤详解

同样的我们也可以添加自己的指令。

更多更详细请看官方文档:https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

创建一个Django项目

$ django-admin startproject DjangoActions
$ cd DjangoActions
$ python3 manage.py startapp mysite

添加model

打开mysite下的models.py

from django.db import models


class Article(models.Model):
 # 文章状态,类似枚举
 STATUS_CHOICES = (
  ('d', '草稿'),
  ('p', '发布'),
 )
 # 标题
 title = models.CharField(max_length=30)
 # 内容
 body = models.TextField()
 # 状态
 status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='d')

 def __str__(self):
  return self.title

将Article注册到admin

打开mysite下的admin.py

from django.contrib import admin
from .models import Article


# 指令处理函数,参数固定写法
def make_article_published(modeladmin, request, queryset):
 # queryset 是从数据库查询到的model set
 # 更新status状态为p,在此处就是Article
 queryset.update(status='p')


# 此指令的名称
make_article_published.short_description = '更改状态为发布'


#将Article注册到后台
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
 # 后台列表展示的字段
 list_display = ('title', 'status')
 # 动作集合
 actions = [make_article_published]

启动服务

1.首先同步数据库

$ python3 manage.py makemigrations
$ python3 manage.py migrate

2.创建超级用户

$ python3 manage.py createsuperuser

按照提示操作即可

3.启动服务

$ python3 manage.py runserver

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python在linux中输出带颜色的文字的方法
Jun 19 Python
python进阶教程之循环对象
Aug 30 Python
Python中的装饰器用法详解
Jan 14 Python
Python字符编码判断方法分析
Jul 01 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
pandas表连接 索引上的合并方法
Jun 08 Python
python 自动去除空行的实例
Jul 24 Python
pyqt5的QComboBox 使用模板的具体方法
Sep 06 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
Mar 03 Python
Django重置migrations文件的方法步骤
May 01 #Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 #Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 #Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 #Python
python实现定时压缩指定文件夹发送邮件
Dec 22 #Python
python定时复制远程文件夹中所有文件
Apr 30 #Python
python实现图片转字符小工具
Apr 30 #Python
You might like
php设计模式 Observer(观察者模式)
2011/06/26 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
javascript实现控制的多级下拉菜单
2015/07/05 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
python 读写中文json的实例详解
2017/10/29 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
Python如何安装第三方模块
2020/05/28 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
关于逃课的检讨书
2014/01/23 职场文书
岗位工作说明书
2014/07/29 职场文书
八年级历史教学反思
2016/02/19 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python