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多线程(python多线程简明教程)
Jun 09 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
Python列表切片用法示例
Apr 19 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
python批量复制图片到另一个文件夹
Sep 17 Python
python3.6生成器yield用法实例分析
Aug 23 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
10个python爬虫入门基础代码实例 + 1个简单的python爬虫完整实例
Dec 16 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 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
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
详解PHP实现异步调用的4种方法
2016/03/14 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
2015/06/12 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
javascript原型继承工作原理和实例详解
2016/04/07 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
Node.js实现发送邮件功能
2017/11/06 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
vue二级路由设置方法
2018/02/09 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
python实现日志按天分割
2019/07/22 Python
Python3实现二叉树的最大深度
2019/09/30 Python
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
简历中自我评价范文3则
2013/12/14 职场文书
合伙协议书
2014/04/23 职场文书
倡议书格式
2014/08/30 职场文书