自定義管理操作(actions )

我們的網(wǎng)站 model 如下:

from django.db import models

STATUS_CHOICES = (
    ('d', 'Draft'),
    ('p', 'Published'),
    ('w', 'Withdrawn'),
)

class Article(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    status = models.CharField(max_length=1, choices=STATUS_CHOICES)

    def __str__(self):
        return self.title

假設我們的網(wǎng)站文章很多,手動一個個去改變 status 的狀態(tài)非常麻煩而耗時。

我們自定義一個方法,能夠批量把文章的 status 批量改為 Published,并讓這個方法能在后臺管理界面輕松使用。

from django.contrib import admin
from myApp.models import Article

# 自定義的操作方法,接受3個參數(shù)
# modeladmin 當前的 ModelAdmin
# request 表示當前請求的 HttpRequest
# queryset 表示用戶所選的對象集合的 QuerySet
def make_published(modeladmin, request, queryset):
    queryset.update(status='p')

# 操作的簡稱
make_published.short_description = "改變狀態(tài)為:published"

# 定義 ModelAdmin 類
# ModelAdmin 類封裝了模型自定義的 Admin 功能和選項
class ArticleAdmin(admin.ModelAdmin):
    # 要展示的字段
    list_display = ['title', 'status']
    # 排序依據(jù)
    ordering = ['title']
    # 新加入的操作方法
    actions = [make_published]

# 參數(shù)帶上 ModelAdmin 才能添加自定義的屬性和方法
admin.site.register(Article, ArticleAdmin)

現(xiàn)在我們自定義的后臺管理界面變成這樣了:

批量修改文章狀態(tài):




改變 action 選擇框的位置

使用 actions_on_topactions_on_bottom 參數(shù)即可選擇把 action 選擇框放到頂部或底部:

class ArticleAdmin(admin.ModelAdmin):
    ……
    ……
    actions_on_top = False
    actions_on_bottom = True




actions_selection_counter

待補充

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容