Django - Admin管理後臺 - 自定製Admin
阿新 • • 發佈:2021-01-18
目錄
- 簡單的展示和管理模型
- 對admin進行定製
- 註冊裝飾器
- ModelAdmin的屬性
簡單的展示和管理模型
在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')