Django admin添加自定义Action教程
16 浏览量
更新于2024-09-02
收藏 127KB PDF 举报
"Python Django给admin添加Action的方法实例详解"
在Django框架中,admin站点是一个强大的工具,允许开发者快速地管理数据库模型。默认情况下,它提供了基础的数据操作功能,如查看、添加、编辑和删除记录。然而,Django还允许自定义Action,这使得我们可以根据项目的特定需求扩展admin功能。本篇将详细介绍如何在Django的admin中添加自定义Action。
首先,我们需要创建一个Django项目。在命令行中执行以下命令:
```bash
$ django-admin startproject DjangoActions
$ cd DjangoActions
$ python3 manage.py startapp mysite
```
接下来,我们创建一个名为`Article`的模型,用于演示如何添加Action。在`mysite/models.py`中添加以下代码:
```python
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`模型包含一个状态字段`status`,用于表示文章是草稿还是已发布。
然后,我们需要在`mysite/admin.py`中注册`Article`模型,并添加自定义Action。这里我们定义一个`make_article_published`函数,用于将选中的文章状态更改为“发布”:
```python
from django.contrib import admin
from .models import Article
# 指令处理函数
def make_article_published(modeladmin, request, queryset):
queryset.update(status='p') # 更新status状态为p
make_article_published.short_description = '更改状态为发布' # 设置Action的显示名称
# 将Article注册到后台
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ("title", "status") # 在后台列表中显示的字段
actions = [make_article_published] # 添加自定义Action
```
在这个`ArticleAdmin`类中,我们通过`actions`属性将`make_article_published`函数添加为一个可选Action。`list_display`属性用于指定在后台列表页面中显示的文章属性。
现在,当你运行开发服务器并访问admin站点时,你可以在`Article`模型的列表视图中看到“更改状态为发布”的Action选项。选中需要更新状态的文章,点击该Action,即可批量将这些文章的状态更改为“发布”。
通过自定义Action,Django的admin站点变得更加灵活,可以根据项目需求实现各种定制化的数据操作功能,提高开发效率。你可以根据需要创建更多的Action,实现更多复杂的业务逻辑。例如,你可以创建一个Action来发送邮件通知,或者执行一些数据统计任务。只要确保Action处理函数正确处理请求和数据集,就能在admin后台轻松实现这些功能。
2020-09-19 上传
2020-09-19 上传
2020-09-19 上传
点击了解资源详情
2020-09-18 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38702931
- 粉丝: 10
- 资源: 907
最新资源
- SSM动力电池数据管理系统源码及数据库详解
- R语言桑基图绘制与SCI图输入文件代码分析
- Linux下Sakagari Hurricane翻译工作:cpktools的使用教程
- prettybench: 让 Go 基准测试结果更易读
- Python官方文档查询库,提升开发效率与时间节约
- 基于Django的Python就业系统毕设源码
- 高并发下的SpringBoot与Nginx+Redis会话共享解决方案
- 构建问答游戏:Node.js与Express.js实战教程
- MATLAB在旅行商问题中的应用与优化方法研究
- OMAPL138 DSP平台UPP接口编程实践
- 杰克逊维尔非营利地基工程的VMS项目介绍
- 宠物猫企业网站模板PHP源码下载
- 52简易计算器源码解析与下载指南
- 探索Node.js v6.2.1 - 事件驱动的高性能Web服务器环境
- 找回WinSCP密码的神器:winscppasswd工具介绍
- xctools:解析Xcode命令行工具输出的Ruby库