如何在 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 操作,将所有选定的文章标记为已发布。

Tags: