溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何使用python django框架中的admin actions

發(fā)布時(shí)間:2020-11-10 09:46:41 來(lái)源:億速云 閱讀:224 作者:小新 欄目:編程語(yǔ)言

如何使用python django框架中的admin actions?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!

關(guān)于django 框架

django 框架配有一個(gè)功能強(qiáng)大的管理站點(diǎn),里面已經(jīng)預(yù)定義了許多管理站點(diǎn)需要進(jìn)行的操作,但是有時(shí)可能默認(rèn)的操作不能滿(mǎn)足需求,如需要批量更新選中的對(duì)象,這需要編寫(xiě)自定義 action 實(shí)現(xiàn)。

Admin actions 簡(jiǎn)介

admin actions 是一些在 admin 站點(diǎn)下拉列表中可以選擇執(zhí)行的簡(jiǎn)單函數(shù),比如刪除一個(gè)對(duì)象操作。

編寫(xiě) Admin actions

下面舉例說(shuō)明如何編寫(xiě)Admin action。例如批量更新一個(gè)名為 Article 的模型:

from django.db import models
 
STATUS_CHOICES = [
 
('d', 'Draft'),
 
('p', 'Published'),
 
('w', 'Withdrawn'),
 
]
 
classArticle(models.Model):
 
title = models.CharField(max_length=100)
 
body = models.TextField
 
status = models.CharField(max_length=1,choices=STATUS_CHOICES)
 
def__str__(self):
 
returnself.title

下面來(lái)編寫(xiě) action 函數(shù),這個(gè)函數(shù)接受三個(gè)函數(shù):

當(dāng)前的 ModelAdmin

一個(gè)代表當(dāng)前 HTTP 請(qǐng)求的 HttpRequest 對(duì)象

一個(gè)包含用戶(hù)選定的對(duì)象的 QuerySet (數(shù)據(jù)庫(kù)檢索對(duì)象)。

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

為了達(dá)到最佳性能,推薦使用 QuerySet 的 update 方法。

for obj in queryset:
 
do_something_with(obj)

默認(rèn)情況下,該操作將以“ Make published ”的形式出現(xiàn)在操作列表中,就是函數(shù)名,下劃線將由空格替換。為了讓這個(gè)方法更容易被人了解,我們可以給它添加一個(gè) short_description 屬性。

def make_published(modeladmin, request,queryset):
queryset.update(status='p')
make_published.short_description ="Markselected stories as published"

感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)如何使用python django框架中的admin actions大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI