欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何使用django2.0來開發(fā)ModelAdmin模型管理

小編給大家分享一下如何使用django2.0來開發(fā)ModelAdmin模型管理,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在沁源等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,沁源網(wǎng)站建設(shè)費用合理。

運行開發(fā)服務(wù)器

> cd cms
> python manager.py runserver

打開瀏覽器http://127.0.0.1:8000/admin
就可以看到后臺的登錄窗口

創(chuàng)建超級管理員

因為我們還沒有后臺的超級管理員, 先用命令行創(chuàng)建一個

> cd cms
> python manager.py createsuperuser

按照提示輸入Username, Password即可, 在瀏覽器中輸入賬號密碼就可以登錄到后臺了

將Account模塊注冊到后臺中

登錄成功后發(fā)現(xiàn)沒有我們的Account模塊, 現(xiàn)在我們就來把Account模塊注冊到后臺中

# account/admin.py
from django.contrib import admin
from .models import Account

admin.site.register(Account)

然后再刷新瀏覽器, 就會發(fā)現(xiàn)出現(xiàn)了Account模塊, 但是顯示的界面全都是英文的

另外還有一種裝飾器的注冊方式

# account/admin.py
from django.contrib import admin
from .models import Account

@admin.register(Account)
class AccountAdmin(admin.ModelAdmin):
    pass

也會實現(xiàn)同樣的效果

將django中文化

django當然替我們想到了這一點

# cms/settings.py
# 指定語言為中文
LANGUAGE_CODE = 'zh-Hans'
# 指定時區(qū)
TIME_ZONE = 'PRC'
# 改為False, 存入數(shù)據(jù)庫的時間才正常, 否則會比正常時間少八個小時
USE_TZ = False

用ModelAdmin來修改管理界面與操作

# account/admin.py
from django.contrib import admin
from .models import Account

@admin.register(Account)
class AccountAdmin(admin.ModelAdmin):
    # 控制列表頁按鈕顯示位置
    actions_on_top = False
    actions_on_bottom = True

    # 是否顯示列表頁數(shù)據(jù)數(shù)量([選中了n個中的m個])
    actions_selection_counter = True

ModelAdmin是后臺指定模塊的一個控制類, 包括后臺的列表頁面樣式、數(shù)據(jù)、以及編輯/新增, 操作方法等都由這個類控制, 當繼承這個類, 我們就可以通過覆蓋這個類的方法, 來完成我們的一些操作

ModelAdmin的配置參數(shù)

actions
指定自定義的操作列表
如果是定義的function, 則
actions = [函數(shù)名]
如果是class的function, 則
actions = ['類中的方法名']

actions_on_top
指定列表頁按鈕的是否在上邊, 設(shè)置為True則在上面
如何使用django2.0來開發(fā)ModelAdmin模型管理

actions_on_bottom
同actions_on_top, 只不過是是否在下方

date_hierarchy
只可作用在DateField和DateTimeField上, 設(shè)置后, 可以根據(jù)時間段, 去過濾數(shù)據(jù)

class AccountAdmin(models.ModelAdmin):
    ...忽略其他代碼
    date_hierarchy = 'create_time'

exclude
排除新增/編輯頁面需要顯示的字段

fields
指定新增、編輯頁面要顯示的字段

fields = ('account', 'nickname', 'password', 'email', 'phone', 'status')

list_display
控制列表頁要顯示的字段

list_display = ('account', 'nickname', 'email', 'phone', 'status',
                    'create_time')

list_display_links
指定哪些在列表頁顯示的字段上加鏈接

list_display_links = ('account', )

list_editable
指定哪些字段可以直接在列表頁編輯

 list_editable = ('status', )

如何使用django2.0來開發(fā)ModelAdmin模型管理

list_filter
列表頁過濾條件

list_filter = ('status', )

如何使用django2.0來開發(fā)ModelAdmin模型管理

ordering
排序, 影響order_by

ordering = ['id]

list_per_page
控制每頁顯示的數(shù)據(jù)數(shù)量

ModelAdmin增加自定義操作

每個會員的狀態(tài)有啟用和禁用兩種, 現(xiàn)在我們想要增加一個操作來批量啟用和禁用

先定義一個操作的方法

class AccountAdmin(models.ModelAdmin):
    def disable_account(self, request, queryset):
        queryset.update(status=0)

    disable_account.short_description='啟用'

disable_account包含兩個參數(shù)
request 是HttpRequest對象, 包含請求的所有清晰
queryset 是數(shù)據(jù)庫操作的QuerySet對象, 也就是當我們點擊了操作按鈕后, 就會執(zhí)行queryset.filter(id__in=選中的id).update(status=0), django已經(jīng)提前幫我們寫好了queryset.filter()這部分寫好了。

disable_account.short_description是指定這個操作在后臺顯示的名稱

定義好方法后, 需要將操作的方法寫入到actions屬性中才會生效

class AccountAdmin(models.ModelAdmin):
    actions = ['disable_ccount']
    def disable_account(self, request, queryset):
        queryset.update(status=0)

    disable_account.short_description='啟用'

同樣的, 我們可以再定義一個enable_accoun方法。
然后在列表頁的動作中, 就可以看到我們定義的操作了

另一種增加自定義操作的方法

這種方法可以用在一般通用方法中, 比如我們的account模型有一個is_deleted字段, 這個字段的意思是在數(shù)據(jù)刪除后, 設(shè)置is_deleted為1, 默認正常時是0, 而django默認的刪除操作是直接物理刪除數(shù)據(jù), 所以我們需要重寫刪除的方法

# account/admin.py
from django.contrib import admin

# 禁用默認的刪除操作
admin.site.disable_action('delete_selected')

這樣就會禁用掉默認的刪除操作

# 重新定義一個刪除操作
def deleted_select(self, request, queryset):
    queryset.update(is_deleted=1)

原理和之前我們增加操作方法一樣
將這個操作注冊到admin站點中

admin.site.add_action(deleted_select, '刪除數(shù)據(jù)')

add_action第一個參數(shù)是操作的函數(shù)名, 第二個是顯示的按鈕

修改ModelAdmin默認的數(shù)據(jù)查詢方法

在我們修改了刪除操作后, 發(fā)現(xiàn)即使我們刪除了數(shù)據(jù), 列表中還是會出現(xiàn), 這個是不符合我們預(yù)期的
所以我們要重寫ModelAdmin的查詢數(shù)據(jù)方法, 過濾掉is_deleted=1的數(shù)據(jù)

class AccountAdmin(admin.ModelAdmin):
    ...省略代碼
    def get_queryset(self, request):
        queryset = super().get_queryset(request)
        return queryset.filter(is_deleted=0)

第一步queryset = super().get_queryset(request), 就是獲取到ModelAdmin的查詢對象QuerySet, 然后增加過濾條件filter, 然后ModelAdmin會繼續(xù)操作查詢的方法。

以上是“如何使用django2.0來開發(fā)ModelAdmin模型管理”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章題目:如何使用django2.0來開發(fā)ModelAdmin模型管理
文章位置:http://chinadenli.net/article12/ggpogc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站面包屑導(dǎo)航移動網(wǎng)站建設(shè)網(wǎng)站內(nèi)鏈響應(yīng)式網(wǎng)站ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)