1、在app下,增加adminx.py
2、
~~~
#adminx.py
import xadmin
from .models import StaffBase
class StaffBaseAdmin(object):
pass
xadmin.site.register(StaffBase,StaffBaseAdmin)
~~~
3、擴展:
~~~
#adminx.py
class StaffBaseAdmin(object):
list_display=['字段1','字段2',......]#列表字段
search_fields=['字段1','字段2',......]#屬性指定可以通過搜索框搜索的數據列的名字, 搜索框搜索使用的是模糊查找的方式, 一般用來搜素名字等字符串字段
list_filter=['字段1','字段2',......]#該屬性指定可以過濾的列的名字, 系統會自動生成搜索器
free_query_filter=['字段1','字段2',......]#默認為?True?, 指定是否可以自由搜索. 如果開啟自由搜索, 用戶可以通過 url 參數來進行特定的搜索
ordering=['字段1','字段2',......]#排序,加“-”為倒序
readonly_fields=['字段1','字段2',......]#只讀字段
exclude=['字段1','字段2',......]#隱藏字段
list_editable=['字段1','字段2',......]#列表頁可修改
show_detail_fields=['字段1','字段2',......]#顯示數據詳情,
refresh_times?=(3,5) #列表定時刷新,refresh_times?屬性是存有刷新時間的數組. xadmin 默認不開啟該插件.
relfield_style='fk-ajax' #下拉式可選,在外鍵對應的字段的adminx.py
~~~
圖表
在數據列表頁面,根據列表數據生成圖表,可以指定多個數據列,生成多個圖表。
?在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?: 排序信息, 如果不寫則使用數據列表的排序
同一個model注冊兩個管理器
~~~
#adminx.py
class app名Inline(object):
model = app名
extra = 0
~~~
在對應的app下:
`inlines=[app名Inline]`
設置只讀字段
在使用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',)
~~~