django项目中xadmin详细使用教程
一:
注意:開(kāi)始先在應(yīng)用下面創(chuàng)建一個(gè)adminx.py文件,名稱(chēng)必須是adminx.py,然后在該文件中做以下操作,切記不能再admin.py文件中做下面的操作
1. 導(dǎo)入xadmin及需要注冊(cè)的模型類(lèi)
import xadmin
from .models import Students, Class, Subjects
2. 自定義模型管理類(lèi),繼承自object基類(lèi),(admin中繼承是:admin.ModelAdmin)
# 自定義模型管理類(lèi)
class StudentsAdmin(object):list_display = ("name", "sex", "age", "address")
3. 注冊(cè)模型類(lèi)
# 注冊(cè)模型類(lèi)
xadmin.site.register(Students, StudentsAdmin)
4. 內(nèi)聯(lián)復(fù)選框的用法
當(dāng)一個(gè)學(xué)生對(duì)應(yīng)多門(mén)課程的時(shí)候,就需要在學(xué)生類(lèi)里面定義一個(gè)多對(duì)多的關(guān)聯(lián)屬性? models.ManyToManyField
然后需要在admin.py中的學(xué)生管理類(lèi)中增加如下屬性:
# 設(shè)置模型類(lèi)字段以多選框的方式呈現(xiàn)并選擇style_fields = {'subjects': 'checkbox-inline', } # 此處的subjects是模型類(lèi)中的關(guān)系屬性名
同時(shí)需要為模型類(lèi)中的關(guān)系屬性增加一個(gè)參數(shù):
subjects = models.ManyToManyField("Subjects", verbose_name="選修課程", blank=True)
# 新增的參數(shù)是:blank=True,如果不增加此參數(shù),那么多選框必須全選才行
5. 設(shè)置搜索條件,在模型管理類(lèi)中增加如下屬性
# 設(shè)置搜索條件search_fields = ["name"]
?5.1要是我們想通過(guò)班級(jí)或者學(xué)科來(lái)查找這個(gè)班級(jí)或者選修這門(mén)學(xué)科的所有學(xué)生
也就是說(shuō)在多的表中想通過(guò)外鍵搜索或過(guò)濾數(shù)據(jù),只需要使用? ?"關(guān)系屬性名__對(duì)應(yīng)的字段名" ? 即可實(shí)現(xiàn)過(guò)濾和搜索,注意事雙下劃線
search_fields = ('name', 'class_name', 'subjects',)這樣定義程序就會(huì)報(bào)錯(cuò),因?yàn)橐驗(yàn)檫@是Students學(xué)生表中的關(guān)系屬性,并不是字段名,正確的寫(xiě)法是:
# 設(shè)置搜索條件,如果是關(guān)系屬性,需要寫(xiě)成:關(guān)系屬性名__對(duì)應(yīng)的字段名search_fields = ["name", "class_name__class_name", "subjects__name"]
6. 過(guò)濾
# 過(guò)濾list_filter = ["sex"]
7. 排序
# 順序排序
ordering = ('age', 'name', )# 逆序排序,在前面加一個(gè)減號(hào)"-",例如按年齡倒序排列ordering = ('-age',)
二:定制網(wǎng)站信息
1. 我們希望登錄網(wǎng)站的時(shí)候,顯示站點(diǎn)的名稱(chēng),修改adminx.py文件,添加LoginViewAdmin類(lèi),并注冊(cè):
# 修改的是登錄窗口的大標(biāo)題
from xadmin.views.website import LoginViewclass LoginViewAdmin(LoginView):title = '學(xué)生信息管理系統(tǒng)'xadmin.site.register(LoginView, LoginViewAdmin)
2. 修改瀏覽器標(biāo)題和左上角的網(wǎng)頁(yè)標(biāo)題以及頁(yè)腳的版權(quán)信息:
from xadmin.views import CommAdminView
class GlobalSetting(CommAdminView):# 左上角及瀏覽器標(biāo)題site_title = '學(xué)生信息管理系統(tǒng)'# 頁(yè)腳版權(quán)信息site_footer = 'Copyright ? 2018 寶寶巴士'xadmin.site.register(CommAdminView, GlobalSetting)
3.?左側(cè)邊欄如果以后項(xiàng)目越來(lái)越多了,有一個(gè)歸類(lèi)會(huì)更好看些,也方便管理操作。這就需要在GlobalSetting類(lèi)中添加
menu_style = 'accordion'
三、樣式如下
?四:xadmin中全局配置詳解
1. 主題設(shè)置
from xadmin import views# 增加自選主題樣式
class BaseSetting(object):enable_themes=Trueuse_bootswatch=Truexadmin.site.register(views.BaseAdminView, BaseSetting)
2. 修改主菜單英文變中文,也就是應(yīng)用名改編成中文
第一步:應(yīng)用下的apps.py文件中增加下面一句代碼
?
第二步:應(yīng)用下面的__init__.py文件中輸入下面代碼
五:樣式又得到了更新,如下
六:xadmin的詳細(xì)配置
1. 站點(diǎn)model模型管理
xadmin 可以使用的頁(yè)面樣式控制基本與Django原生的admin一直。# 按日期、月份篩選
date_hierarchy = "date"list_display 列表展示的字段preserve_filters 默認(rèn)情況下,當(dāng)你對(duì)目標(biāo)進(jìn)行創(chuàng)建、編輯或刪除操作后,頁(yè)面會(huì)依然保持原來(lái)的過(guò)濾狀態(tài)。將preserve_filters設(shè)為False后,則會(huì)返回未過(guò)濾狀態(tài)。prepopulated_fields 設(shè)置預(yù)填充字段。不接收DateTimeField、ForeignKey和ManyToManyField類(lèi)型的字段。view_on_site 這個(gè)屬性可以控制是否在admin頁(yè)面顯示“View site”的鏈接。這個(gè)鏈接主要用于跳轉(zhuǎn)到你指定的URL頁(yè)面。free_query_filter 屬性: 默認(rèn)為 True , 指定是否可以自由搜索. 如果開(kāi)啟自由搜索, 用戶可以通過(guò) url 參數(shù)來(lái)進(jìn)行特定的搜索,
search_fields 可以通過(guò)搜索框搜索的字段名稱(chēng),xadmin使用的是 模糊查詢,存在外鍵 同 list_filter 一樣 注意:只能包括 字符類(lèi)型,不能有 非字符類(lèi)型 如:SBBH-20180515-0002
list_filter 可以進(jìn)行過(guò)濾操作的列,例如:存在外鍵字段class ---》student__class 獲取值ordering 默認(rèn)排序的字段
readonly_fields 在編輯頁(yè)面的只讀字段
exclude 在編輯頁(yè)面隱藏的字段
list_editable 在列表頁(yè)可以快速直接編輯的字段
show_detail_fileds 在列表頁(yè)顯示詳情信息
refresh_times 指定列表頁(yè)的數(shù)據(jù)定時(shí)刷新 例如:refresh_times=(3,5)
list_export 控制列表頁(yè)導(dǎo)出數(shù)據(jù)的類(lèi)型
show_bookmarks 控制是否顯示書(shū)簽功能
data_charts 控制顯示圖標(biāo)的樣式
model_icon 配置表的圖標(biāo),可以在 awesome 上下載最新的font-awesome.css 替換,并尋找相應(yīng)的icon書(shū)寫(xiě)
fieldsets ,詳細(xì)頁(yè)面時(shí),使用fieldsets標(biāo)簽對(duì)數(shù)據(jù)進(jìn)行分割顯示
empty_value_display = "列數(shù)據(jù)為空時(shí),顯示默認(rèn)值"
# 列聚合,可用的值:"count","min","max","avg", "sum"
aggregate_fields = {"expire": "max"}# 顯示還原按鈕,刪除修改的信息可以還原
reversion_enable = True# 添加數(shù)據(jù)時(shí)候,一步一步提供數(shù)據(jù)
wizard_form_list = [("基礎(chǔ)信息", ("name", "contact", "telphone", "address")),("其它信息", ("customer_id", "expire", "description")),
]fields 表單顯示內(nèi)容, 不包含在內(nèi)的字段不能編輯
filter_horizontal 從‘多選框’的形式改變?yōu)椤^(guò)濾器’的方式,水平排列過(guò)濾器,必須是一個(gè) ManyToManyField類(lèi)型,且不能用于 ForeignKey字段,默認(rèn)地,管理工具使用下拉框 來(lái)展現(xiàn)外鍵 字段raw_id_fields 將ForeignKey字段從‘下拉框’改變?yōu)椤谋究颉@示relfield_style 后臺(tái)自定義不是下拉選擇框,而是搜索框(解決了為什么用戶不是下拉框的問(wèn)題。。) relfield_style = 'fk-ajax'
exclude 在編輯和查看列表時(shí)指定不顯示的字段
list_editable 列表顯示的時(shí)候,指定的字段可以直接頁(yè)面一鍵編輯
list_display_links 設(shè)置默認(rèn)可編輯字段
list_per_page = 20 每頁(yè)顯示20個(gè)
actions = ('ocr_action', 'excel_action', 'auto_excel_action') 在類(lèi)中自定義的函數(shù)方法
auto_excel_action.short_description='自動(dòng)化導(dǎo)入數(shù)據(jù)文件' 函數(shù)名描述object_list_template = "test.html" 自定義頁(yè)面data_charts 圖表,該屬性為dict類(lèi)型,key為圖表的標(biāo)示名稱(chēng),value為圖表的具體設(shè)置屬性
data_charts = {"user_count": {'title': u"約運(yùn)動(dòng)","x-field": "sport_time", "y-field": ("people_nums",),},}圖表屬性:title : 圖表的顯示名稱(chēng)x-field : 圖表的 X 軸數(shù)據(jù)列, 一般是日期, 時(shí)間等y-field : 圖表的 Y 軸數(shù)據(jù)列, 該項(xiàng)是一個(gè) list, 可以同時(shí)設(shè)定多個(gè)列, 這樣多個(gè)列的數(shù)據(jù)會(huì)在同一個(gè)圖表中顯示order : 排序信息, 如果不寫(xiě)則使用數(shù)據(jù)列表的排序# 導(dǎo)出類(lèi)型list_export = ('xls', 'xml', 'json') list_export設(shè)置為None來(lái)禁用數(shù)據(jù)導(dǎo)出功能#導(dǎo)出字段list_export_fields = ('start_people', 'sport', 'sport_time')
2. 站點(diǎn)全局配置
import xadmin
from xadmin import viewsclass BaseSetting(object):"""xadmin的基本配置"""enable_themes = True # 開(kāi)啟主題切換功能use_bootswatch = True # 支持切換主題xadmin.site.register(views.BaseAdminView, BaseSetting)class GlobalSettings(object):"""xadmin的全局配置"""site_title = "xxx后臺(tái)管理系統(tǒng)" # 設(shè)置站點(diǎn)標(biāo)題site_footer = "xxxxxxx" # 設(shè)置站點(diǎn)的頁(yè)腳menu_style = "accordion" # 設(shè)置菜單折疊,在左側(cè),默認(rèn)的# 設(shè)置models的全局圖標(biāo), UserProfile, Sports 為表名global_search_models = [UserProfile, Sports]global_models_icon = {UserProfile: "glyphicon glyphicon-user", Sports: "fa fa-cloud"xadmin.site.register(views.CommAdminView, GlobalSettings)
?3. style_fields 控制字段的顯示樣式,默認(rèn)ManyToManyField字段樣式是個(gè)單排下拉框,添加選項(xiàng)不方便,
下面是兩種樣式
subjects:是Model中的一個(gè)多對(duì)多字段
checkbox-inline和m2m_transfer是兩種樣式?
filter_horizontal = ["subjects"]??# 多對(duì)多樣式字段支持過(guò)濾
七:樣式如圖
八:全局圖標(biāo)配置:
(1)圖標(biāo)網(wǎng)址:
https://fontawesome.dashgame.com/
(2)全局配置,可以配置所有應(yīng)用下面的模型類(lèi)對(duì)應(yīng)的圖標(biāo),只需要王global_models_icon字典中追加模型類(lèi)名:圖標(biāo)名即可。
from xadmin.views import CommAdminView
from apps.organizations.models import Teacher# 全局配置
class GlobalSetting(CommAdminView):global_models_icon = {Teacher: "fa fa-address-book", # Teacher模型類(lèi),address-book圖標(biāo)名稱(chēng),fa fa-前綴}# 注冊(cè)模型類(lèi)
xadmin.site.register(CommAdminView, GlobalSetting)
?
參考更詳細(xì)鏈接地址:https://www.cnblogs.com/pgxpython/p/10217888.html
總結(jié)
以上是生活随笔為你收集整理的django项目中xadmin详细使用教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机博士两篇一区两篇会议,本科博士联手
- 下一篇: ajax alert表单,jQuery