1. 程式人生 > 其它 >Django - Admin管理後臺 - 自定製Admin

Django - Admin管理後臺 - 自定製Admin

技術標籤:Django進階django

目錄

簡單的展示和管理模型

在admin.py模組中使用admin.site.register將模型註冊

from django.contrib import admin
from myproject.myapp.models import Author

admin.site.register(Author)

對admin進行定製

使用Django提供的ModelAdmin類

from django.contrib import admin
from myproject.
myapp.models import Author # 建立一個ModelAdmin的子類 class AuthorAdmin(admin.ModelAdmin): pass # 註冊的時候, 將原模型和ModelAdmin關聯起來 admin.site.register(Author, AuthorAdmin)

註冊裝飾器

用裝飾器的方式連線模型和ModelAdmin.

from django.contrib import admin
from myproject.myapp.models import Author

@admin.register(Author)
class AuthorAdmin
(admin.ModelAdmin): pass

ModelAdmin的屬性

ModelAdmin.actions

一個列表, 包含自定義的actions

ModelAdmin.actions_on_top

是否在列表上放顯示actions的下拉框, 預設為True

ModelAdmin.actions_selection_counter

是否在actions下拉框右側顯示選中的物件的數量, 預設為True
在這裡插入圖片描述

ModelAdmin.date_hierarchy

根據指定的日期相關的欄位, 為頁面建立一個日期導航欄, 可通過日期過濾物件

date_hierarchy = 'pub_date'

ModelAdmin.empty_value_display

指定空白顯示的內容.
如果有些欄位沒有值, 預設情況下會顯示破折號 ‘-’.

from django.contrib import admin

class AuthorAdmin(admin.ModelAdmin):
	empty_value_display = '-empty-'

ModelAdmin.exclude

不顯示指定的某些欄位

class AuthorAdmin(admin.ModelAdmin):
    # 值是個元組
    exclude = ('birth_date',)

ModelAdmin.fields

按你希望的順序,顯示指定的欄位
可以通過組合元組的方式,讓某些欄位在同一行內顯示

class FlatPageAdmin(admin.ModelAdmin):
    fields = (('url', 'title'), 'content')

ModelAdmin.fieldsets

根據欄位對頁面進行分組顯示或佈局

from django.contrib import admin

class FlatPageAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {
            'fields': ('url', 'title', 'content', 'sites')
        }),
        ('Advanced options', {
            'classes': ('collapse',),
            'fields': ('registration_required', 'template_name'),
        }),
    )

在filed_options字典內, 可以使用下面這些關鍵字

fields:一個必填的元組,包含要在fieldset中顯示的欄位
classes : 一個包含額外的CSS類的元組
引數
* collaspe : 將fieldsets摺疊起來.
* wide : 具備更寬的水平空間
description:一個可選的額外的說明文字,放置在每個fieldset的頂部

ModelAdmin.filter_horizontal

水平擴充套件多對多欄位.

ModelAdmin.filter_vertical

垂直擴充套件多對多欄位.

ModelAdmin.inlines

參考InlineModelAdmin物件,就像ModelAdmin.get_formsets_with_inlines()一樣。

ModelAdmin.list_display

指定顯示在修改頁面上的欄位。例如:

list_display = ('first_name', 'last_name')