上一篇中我們基本完成了xadmin的配置,但是要進行正式使用還需要更多細致的配置。
1.頁面顯示中文
settings.py中配置(這個和django自帶的admin配置一樣)
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai'
可見登錄頁面和首頁都變成中文了:


2.xadmin的site-title和site-footer,菜單折疊
site-title和site-footer都是設置在base_site.html模板頁面中的,可以從xadmin的安裝目錄下的xadmin\templates\xadmin目錄中找到:


從圖片中可以看出來,site_title和site_footer都是可以通過程序設置的變量,那么想要設置這兩個變量要怎么做呢?只要在adminx.py文件中添加GlobalSetting類,具體代碼如下:
from xadmin import views
class GlobalSetting(object):
# 設置base_site.html的Title
site_title = '我的腦袋'
# 設置base_site.html的Footer
site_footer = '我的腳丫'
xadmin.site.register(views.CommAdminView, GlobalSetting)
效果:

設置菜單折疊,在上面代碼下添加: menu_style = "accordion"
折疊菜單如下:

3.設置models的全局圖標
和上面修改title和footer一樣,在類GlobalSetting 中添加:
global_models_icon = {
V_UserInfo: "glyphicon glyphicon-user", UserDistrict: "fa fa-cloud"
} # 設置models的全局圖標

這樣我們可以看到圖標的model圖標的變化

至於圖標的對應代碼可以去
http://v3.bootcss.com/components/
http://www.yeahzan.com/fa/facss.html
上查找。
官網是這樣介紹的:

4.設置app標題。

這里還顯示的是我們app的名字,怎么修改呢?
涉及2個地方:
1> apps.py里添加verbose_name

2>__init__.py添加默認配置。

之后我們就可以看到修改后的頁面了:

5.顯示數據詳情
設置 OptionClass 的 show_detail_fields .

效果:


6.列表定時刷新
設置 OptionClass 的 refresh_times 屬性即可. refresh_times 屬性是存有刷新時間的數組. xadmin 默認不開啟該插件.

效果如下:

7.書簽
數據列表頁面特定的數據過濾,排序等結果,添加的書簽還可以在首頁儀表盤中作為小組件添加。
在Model OptionClass中設定如下屬性:
-
show_bookmarks 屬性:
設置是否開啟書簽功能, 默認為 True
-
list_bookmarks 屬性:
設置默認的書簽. 用戶可以在列表頁面添加自己的書簽, 你也可以實現設定好一些書簽, 使用實例如下:
使用實例如下:
list_bookmarks = [{
"title": "存在郵箱",
"query": {"user_email__contains": '@'},
"order": ("-user_name",),
"cols": ('user_name', 'user_email', 'user_mobile'),
}]

效果:


8.圖表
在數據列表頁面,根據列表數據生成圖表,可以指定多個數據列,生成多個圖表。
在Model OptionClass 中設定data_charts屬性,該屬性為dict類型,key是圖表的標示名稱,value是圖表的具體設置屬性,示例:
data_charts = {
"user_count": {'title': u"User Register Raise", "x-field": "year", "y-field": ("cn",),
"order": ('year',)},
# "avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)}
}

圖表的主要屬性為:
title : 圖表的顯示名稱
x-field : 圖表的 X 軸數據列, 一般是日期, 時間等
y-field : 圖表的 Y 軸數據列, 該項是一個 list, 可以同時設定多個列, 這樣多個列的數據會在同一個圖表中顯示
order : 排序信息, 如果不寫則使用數據列表的排序
效果:

9.數據導出
如果想要導出Excel數據,需要安裝xlwt。
默認情況下,xadmin會提供Excel,CSV,XML,json四種格式的數據導出,可以通過設置OptionClass的list_export屬性來指定使用哪些導出格式(四種格式分別用xls,csv,xml,json表示)或是將list_export設置為None來禁用數據導出功能。

10.過濾
在 Model OptionClass 中設置以下屬性:
list_filter 屬性:
該屬性指定可以過濾的列的名字, 系統會自動生成搜索器
search_fields 屬性:
屬性指定可以通過搜索框搜索的數據列的名字, 搜索框搜索使用的是模糊查找的方式, 一般用來搜素名字等字符串字段
free_query_filter 屬性:
默認為 True , 指定是否可以自由搜索. 如果開啟自由搜索, 用戶可以通過 url 參數來進行特定的搜索, 例如:
http://xxx.com/xadmin/auth/user/?name__contains=tony
11. 設置只讀字段
在使用xadmin的時候,ModelAdmin默認只有對於model的增刪改查,但是總是有些字段是不希望用戶來編輯的。而 readonly_fields 設置之后不管是admin還是其他用戶都會變成只讀,而我們通常只是想限制普通用戶。 這時我們就可以通過重寫 get_readonly_fields 方法來實現對特定用戶的只讀顯示。
class UserInfoAdmin():
def get_readonly_fields(self):
""" 重新定義此函數,限制普通用戶所能修改的字段 """
if self.user.is_superuser:
self.readonly_fields = []
return self.readonly_fields
readonly_fields = ('user_email',)
效果:
普通用戶:

admin:

參考: http://xadmin.readthedocs.io/en/docs-chinese/plugins.html
http://blog.csdn.net/lyysr/article/details/48735053
http://www.cnblogs.com/shhnwangjian/p/6372503.html
