如何在 Django admin 中添加自定义批量操作的方法
Published on Aug. 22, 2023, 1:53 p.m.
在 Django 的 admin 界面中,你可以通过在你的 ModelAdmin
类中定义一个方法,然后将这个方法的名称添加到 actions
列表中,来实现自定义的批量操作。
以下是一个简单的例子,假设你有一个 Article
模型,你想要添加一个批量操作来将选定的文章标记为已发布:
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'status') # 在列表页显示的字段
actions = ['make_published'] # 添加操作到 actions 列表
def make_published(self, request, queryset):
# 更新 queryset 中的所有对象的状态
queryset.update(status='PUBLISHED')
make_published.short_description = 'Mark selected articles as published' # 设置操作的描述
admin.site.register(Article, ArticleAdmin)
在这个例子中,make_published
方法将所有选定的文章的 status
字段更新为 'PUBLISHED'
。short_description
属性设置了在 admin 界面中显示的操作的描述。
现在,当你在文章的 admin 列表页选定一些文章后,你可以在 “Action” 下拉菜单中看到一个 “Mark selected articles as published” 选项。选择这个选项并点击 “Go” 按钮,将会执行 make_published
操作,将所有选定的文章标记为已发布。