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