1、中文設置:
settings.py中直接配置:
LANGUAGE_CODE = "zh-hans"
TIME_ZONG = "Asia/Shanghai"
2、菜單折疊:
在users/xadmin.py中添加GLOBALSETTINGS
from xadmin import views
class GlobalSettings(object):
site_title = "頭部名稱"
site_footer = "腳部名稱"
menu_style = "accordion" # 菜單折疊
apps_icons = {"appname":"icon"} #設置app的顯示圖標
xadmin.site.register(views.CommAdminView, GlobalSettings)
3、頁面布局定制:
class UserAdmin(object):
def get_form_layout(self):
if self.org_obj:
self.form_layout = (
Main(
Filedset('',
'username', 'password', css_class="unsort no_title"
),
Fieldset(_('Personal info'),
Row('firstname', 'lastname'), email
),
Fieldset(
_('permissions'),
'grounps', 'userpermissions'
),
Fieldset(
_('important dates'),
'last_login', 'date_joined'
),
),
Side(
Fieldset(
_('status'),
'is_active', 'is_stuff', "is_superuser"
)
)
)
return self.super(UserAdmin, self).get_form_layout()
4、更改圖標
更改app圖標 通過app_icons來設置
class GlobalSetting(object): site_title = "上海諾行信息技術有限公司" site_footer = "COPYRIGHT © 2010 - 2018 ALL RIGHTS RESERVED" menu_style ="accordion" apps_icons = {"home":"fa fa-home", "products":"", "companyintroduction":"", "certifications":"fa fa-certificate", "contactus":"fa fa-phone", "forum":"","logisticinformation":"", "sourcedownload":"fa fa-download","trade":"fa fa-shopping-cart","users":"fa fa-user", "wechatuser":"fa fa-user"}
更改model圖標,通過model_icon來設置
class relativeFilesAdmin(object):
model = relativeFiles
extra = 0
model_icon = "fa fa-download"
inField = "company"
可選的圖標可查看 font awesome,可自行下載最新的圖標包來替換現有的
font awesome : http://fontawesome.dashgame.com/
5、顯示排序
通過ordering配置
class ProductListAdmin(object):
...
ordering = ["sales_num",]
6、只讀字段:
readonly_fields = ["",""],如果想要自定義只讀字段顯示方式,可以重寫get_readonly_fields():函數
7、不包含及不在list列表界面顯示
exclude = ["",""]
注意,exclude和readonly_fields是沖突的,配置了readonly_fields,則exclude是無效的
8、inlineAdmin嵌套編輯
假設A是B的外鍵
class AAdmin(object):
model = A
extra = 1
class BAdmin(object):
list_display = ["",""]
inlines = [A,]
這樣在編輯B的時候,就可以同時對A進行增刪改查
但是要注意一個問題,這里的A,里面一定要寫明model =A,不能像B寫list_display = [""],否則會報錯 'NoneType' object has no attribute '_meta'
extra:表示的是在編輯B的時候,展示幾個A的可編輯框。不設置的話默認是3個,設置為0的話,則表示A編輯框是收起的。
9、兩個管理器管理一張表
對於A 繼承B 的情況,我們可以對A和B使用同一張表來管理,而不用分別為A和B建立表
10、Xadmin中的View對應含義:
1)views-->base.py:
BaseAdminView:所有的AdminView的基類,繼承自BaseAdminObject和Djano.views.generic.View,注冊在該View上的插件 可以影響所有的AdminView,對應的模板是 base.html
CommAdminView:繼承於BaseAdminView,此類是用戶登錄后顯示用到的View,也是登錄后所有View的基類。該類的主要作用是創建Xadmin的通用元素,如系統菜單,用戶信息等全局設置。
所有 關於菜單,列表界面顯示的樣式等 都可以在此類中完成設置,如上面2中設置全局的屬性用到的就是此基類。
此基類對應的模板為:base_site.html, include/sitemenu_default.html
ModelAdminView:基於model的AdminView的基礎類,注冊的插件可以影響所有基於model的view
如我們在model里面設置的verbose_name,注冊model時設置的model_icon等 通過在此類中展示
2)views-->list.py
ListAdminView:model列表頁面view,它實現了數據排序和分頁功能
包含的可選擇設置屬性:
list_display = [] | () 可以是列表或者元組,設置要在list界面展示的字段
list_display_link = () 設置作為鏈接去展示詳情的字段
search_fields = () 設置搜索字段
ordering = () 設置排序字段
3)views-->edit.py
ModelFormAdminView:model編輯頁面View
此類是一個基類,CreateAdminView和UpdateAdminView繼承自此類
options 屬性:
readonly_fields = () #定義只讀字段
exclude = ["",""] #定義的字段不會顯示在編輯界面,但是和readonly_fields使用沖突,定義了readonly_fields的字段再定義exclude是無效的
style_fields = () #定義該字段樣式 如 style_fields= ("content":"ueditor"),以富文本方式展示
save_as = True/False #是否顯示另存為按鈕
form_layout = () #可以自定義detail界面的樣式:
def get_form_layout(self):
self.form_layout = (
Main(
Fieldset("title",
Row("name", "index"),
"link"
),
Fieldset("title",
Row("name", "index"),
"link"
),
),
Side(...)
)
return super(modelAdmin, self).get_form_layout()
relfield_style = "fk-ajax" # 對於下拉框采用ajax異步搜索加載的方式呈現
list_editable = ["",""] #直接以可編輯的方式展示,無需點開詳情界面即可編輯
CreateAdminView(ModelFormAdminView): model創建頁面View
UpdateAdminView(ModleFormAdminView):model修改頁面View
4)views--->delete.py
DeleteAdminView(ModelFormAdminView):mode刪除頁面View
5)views---->detail.py
DetailAdminView(ModelFormAdminView):model詳情頁面View