Python Django给admin添加Action的方法实例详解

那我就详细讲解一下 "Python Django给admin添加Action的方法实例详解" 的完整攻略。本文内容包括以下两条示例说明:

示例一:

  1. 首先,在你的 Django 项目中,为你要添加 Action 的 Model 创建一个 admin.py 文件。
  2. 在 admin.py 文件中,定义一个函数来作为你要添加的 Action:
from django.contrib import admin
from .models import YourModel

def make_published(modeladmin, request, queryset):
    queryset.update(status='p')

make_published.short_description = "标记所选的文章为已发布状态"

@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
    list_display = ('title', 'status', 'created_at',)
    actions = [make_published]

在这个示例中,我们首先导入了 Django 的 admin 模块以及你将要添加 Action 的 Model。接下来,定义了一个名为 make_published 的函数作为 Action。这个函数接受三个参数:modeladmin、request 和 queryset。modeladmin 参数是一个 admin.ModelAdmin 的实例,request 参数是当前请求的 HttpRequest 对象,queryset 参数是当前所选的数据集。

在函数体内,我们使用 queryset.update() 来将所选数据集的 status 字段的值改为 'p'。最后,给函数添加了一个名为 short_description 的特性,用于在 Admin 中显示 Action 的名称。

最后,我们使用 @admin.register() 装饰器为 YourModel 类注册管理器,并在 YourModelAdmin 类中定义了我们刚才创建的 Action。

示例二:

  1. 和示例一一样,在你的 Django 项目中,为你要添加 Action 的 Model 创建一个 admin.py 文件。
  2. 在 admin.py 文件中,定义一个函数来作为你要添加的 Action:
from django.contrib import admin
from .models import YourModel

def make_colorful(modeladmin, request, queryset):
    queryset.update(color='c')

make_colorful.short_description = "将所选的文章标记为彩色"

class YourModelAdmin(admin.ModelAdmin):
    list_display = ('title', 'status', 'color',)
    actions = [make_colorful]

@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
    list_display = ('title', 'status', 'created_at',)
    actions = [make_colorful]

在这个示例中,我们定义了一个名为 make_colorful 的函数作为 Action。和示例一不同的是,这里我们没有使用 @admin.register() 装饰器,而是直接在 YourModelAdmin 类中定义了我们的 Action。这个示例的其余部分与示例一基本相同。

值得一提的是,我们在示例二中没有使用 @admin.register() 装饰器的原因是,我们希望在同一个管理器中定义多个 Model 的 Action。如果使用 @admin.register(),则需要为每个 Model 分别定义一个 Admin 类,这样就会显得很冗长。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Django给admin添加Action的方法实例详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • pyinstaller打包django项目的实现步骤

    打包 Django 项目需要先使用 Pyinstaller 将 Python 代码打包成一个可执行二进制文件,然后再通过其他工具将 Django 项目打包成安装包或者 Docker 镜像。以下是详细的实现步骤: 1. 安装 Pyinstaller 在终端执行以下命令安装 Pyinstaller: pip install pyinstaller 2. 生成 D…

    Django 2023年5月16日
    00
  • [django]django 3种返回json方法

    django 3种返回json方法 1.手动组装字典返回 from django.http import JsonResponse, HttpResponse from django.shortcuts import render from app01.models import Book # Create your views here. def get_…

    Django 2023年4月10日
    00
  • Web框架django[Form]组件

    新手上路 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1、创建Form类 # 创建一个类 from django import forms from django.forms import fields class DiyForm(form…

    Django 2023年4月13日
    00
  • Python的Django框架中模板碎片缓存简介

    Python的Django框架中模板碎片缓存简介 什么是模板碎片缓存? Django中的模板碎片缓存(Template Fragment Caching)是一种缓存技术,通过缓存模板的部分内容来提高网站的响应速度。在每次请求时,不必重新渲染整个页面,而是只需要重新渲染页面中发生变化的部分。 如何使用模板碎片缓存? 首先需要在settings.py中配置缓存:…

    Django 2023年5月16日
    00
  • django 执行 python manage.py makemigrations 报错

    RuntimeError: Model class app_anme.models.xxx doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS.  将app加入settings的INSTALLED_APPS 中

    Django 2023年4月11日
    00
  • jQuery的ajax与django传参

    Django中的代码如下: urls.py代码: from django.conf.urls import url from django.contrib import admin import AjaxTest.views urlpatterns = [ url(r’^admin/’, admin.site.urls), url(r”^index/$”,A…

    Django 2023年4月13日
    00
  • django向数据库添加数据

    url.py        views.py    host.html (样式)  (展示部分)   (添加信息界面) (js部分)     展示添加数据:    

    Django 2023年4月12日
    00
  • django多对多表的创建,级联删除及手动创建第三张表

    下面是关于 Django 多对多表的创建、级联删除以及手动创建第三张表的完整攻略: 多对多表的创建 在 Django 中创建多对多关系的表格非常简单。我们需要使用models.ManyToManyField()。下面是一个示例: from django.db import models class Author(models.Model): name = m…

    Django 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部