关键词

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 类,这样就会显得很冗长。

本文链接:http://task.lmcjl.com/news/15630.html

展开阅读全文