您好,登錄后才能下訂單哦!
如何使用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ù):
l 當(dāng)前的 ModelAdmin
l 一個(gè)代表當(dāng)前 HTTP 請(qǐng)求的 HttpRequest 對(duì)象
l 一個(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è)資訊頻道。
免責(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)容。