自定义Django Admin Action:添加文章发布功能
165 浏览量
更新于2024-08-29
收藏 128KB PDF 举报
本文将详细介绍如何在Python Django框架中给admin后台添加自定义操作方法。Django自带的admin提供了基础的数据管理功能,包括查看、添加、编辑和删除等操作。然而,当我们需要更复杂的业务逻辑,如批量更新数据状态时,可以通过自定义admin Action来扩展其功能。
首先,让我们创建一个新的Django项目:
1. 打开命令行,使用`$ django-admin startproject DjangoActions`创建一个名为DjangoActions的项目。
2. 进入项目目录:`$ cd DjangoActions`。
3. 添加一个新的应用:`$ python3 manage.py startapp mysite`。
接下来,在mysite应用中的models.py文件中,定义一个Article模型,包含标题(title)、内容(body)以及状态(status)字段,这里的状态字段用枚举的方式表示:
```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
```
在admin.py文件中,我们需要定义一个自定义Action。这里创建一个名为`make_article_published`的函数,该函数接受modeladmin、request和queryset作为参数,用于批量更新文章的状态为'p'(发布):
```python
def make_article_published(modeladmin, request, queryset):
queryset.update(status='p')
make_article_published.short_description = '更改状态为发布'
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'status') # 在后台显示文章标题和状态
actions = [make_article_published] # 将自定义方法添加到actions列表
# 在项目的urls.py中添加admin路径,以便访问admin界面
from django.urls import path
from django.contrib import admin
urlpatterns = [
path('admin/', admin.site.urls),
]
```
最后,启动Django开发服务器:
1. 同步数据库:`$ python3 manage.py makemigrations`。
2. 应用迁移:`$ python3 manage.py migrate`。
3. 启动服务器:`$ python3 manage.py runserver`。
现在,当你登录到Django Actions项目的admin后台,可以在Article的列表页面看到"更改状态为发布"的选项。选择需要发布的文章后,点击这个按钮即可批量更新文章状态为'p',实现了自定义的admin Action功能。这展示了如何在Django框架中扩展admin功能,以便满足特定业务需求。
2021-01-01 上传
2020-12-25 上传
2020-09-19 上传
点击了解资源详情
点击了解资源详情
2020-09-18 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38703277
- 粉丝: 6
- 资源: 915
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍