django -xadmin 詳解 功能實現及orm 的復習


django 在xadmin中自定義內容的變量及優化匯總

 

一: 首先下載xadmin

 

pip install git+git://github.com/sshwsfc/xadmin.git@django2

 

 

然后在項目的settings.py中添加如下配置

 

 

INSTALLED_APPS = [
    .....
    'xadmin',
    'crispy_forms',
    'reversion'
]

 

 

 

假如你是用的MySql數據庫,進行如下配置

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '139.107.172.158',
        'PORT': '3306',
    }
}

 

 

 

同時可以把語言改成中文,時區改成上海

 

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

USE_TZ = False # 如果沒有國際化的需求寫False,否則數據中插入時間時,有警告。

 

 

 

下一步配置路由,打開項目的urls.py做如下修改

 

urlpatterns = [
    ......
    path('admin/', xadmin.site.urls),
]

 

 

 

 

ok ! 你可以用了

 

1、list_display 指定xadmin中需要顯示哪些字段信息,以列表顯示

list_display = ('first_name', 'last_name', 'email')

2、search_fields 指定哪些字段信息可以被搜索

search_fields = ('first_name', 'last_name')

3、list_filter 添加哪些字段需要進行過濾顯示(添加過濾器)

list_filter = ('publication_date',) #添加過濾(這里是過濾日期) 

4、date_hierarchy 添加日期過濾器,該字段只能是日期類型

date_hierarchy = 'publication_date' #過濾(日期的另外一種過濾方式,可以添加后看一下) 

5、ordering 顯示的列表以什么進行排序 ,加‘-’表示降序

ordering = ('-publication_date',) #排序(這里以日期排序,加‘-’表示降序) 

6、fields 排除一些不想被其他人編輯的fields,不包含在內的字段不能編輯

fields = ('title', 'authors', 'publisher') 

7、filter_horizontal 從‘多選框’的形式改變為‘過濾器’的方式,水平排列過濾器,必須是一個 ManyToManyField類型,且不能用於 ForeignKey字段,默認地,管理工具使用下拉框 來展現外鍵 字段

 
        

8、filter_vertical #同上filter_horizontal,垂直排列過濾器

filter_vertical = ('authors',) 

9、raw_id_fields 將ForeignKey字段從‘下拉框’改變為‘文本框’顯示

raw_id_fields = ('publisher',) 

10、list_editable 列表顯示的時候,指定的字段可以直接頁面一鍵編輯

 list_editable = ['csdevice'] 

11、model_icon 指該表菜單的icon樣式

model_icon = 'fa fa-user-secret' 

12、readonly_fields 指定一些字段為只讀,不可修改

readonly_fields = ('cservice',) 

13、exclude 在編輯和查看列表時指定不顯示的字段

exclude = ['cservice'] 

14、style_fields 指定xadmin插件的樣式

style_fields = {'csdevice': 'm2m_transfer','csservice': 'ueditor',} 

15、refresh_times 后台可選擇10秒刷新一次或者60秒刷新一次如下

refresh_times = [10, 60] 

16、show_detail_fields 在指定的字段后添加一個顯示數據詳情的一個按鈕

show_detail_fields=['ttdsn'] 

17、relfield_style后台自定義不是下拉選擇框,而是搜索框(解決了為什么用戶不是下拉框的問題。。)

relfield_style = 'fk-ajax' 

18、修改 xadmin 的主題 、title、header、菜單樣式

 from xadmin import views class BaseSetting(object): enable_themes = True #開啟主題選擇 use_bootswatch = True class GlobalSettings(object): site_title = "老眼售后管理系統" #設置左上角title名字 site_footer = "lybbn" #設置底部關於版權信息 #設置菜單縮放 menu_style = "accordion" #設置菜單樣式 xadmin.site.register(views.BaseAdminView, BaseSetting) xadmin.site.register(views.CommAdminView, GlobalSettings) 

19、頁面顯示中文和時區

在settings.py中配置

LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' 

20、設置xadmin的app標題,在apps.py文件中,添加verbose_name = "客戶管理"

from django.apps import AppConfig class CustomersConfig(AppConfig): name = 'apps.customers' verbose_name = "客戶管理"










自定制: action 的使用
可以通過orm 進行跨表或者 當前表計算

 

 

 

 

 list_display 設定 字段

obj 是當前操作行的字段. 可以 通過orm 跨表  或者當前表進行計算設定

 

 

 

 

 

 

圖表的使用

圖表主要分成 折線圖和柱形圖 ,目前還沒找到怎么改 只能用默認樣式.

等着研究研究怎么把echarts 加入到xadmin 中 使用

 

   data_charts = {
        "user_count": {'title': u"sc金額變化表折現表",
                       "x-field": "num",
                       "y-field": ("dqmoney",),
                       },
        "num_count": {'title': u"sc金額變化表1柱形表",
                       "x-field": "num",
                       "y-field": ("dqmoney",),
                      'option': {
                          "series": {"bars": {"align": "center", "barWidth": 0.8, "show": True}},
                          "xaxis": {"num": "count", "dqmoney": "categories"}
                      },
                       },
    }

 

 

 

 

 

 

整體代碼

# -*- coding: utf-8 -*-
# @Time    : 2019/6/22 14:11
# @Author  : Endless-cloud
# @Site    : 
# @File    : adminx.py
# @Software: PyCharm
'''
         ┏┓  ┏┓+ +
        ┏┛┻━━━┛┻┓ + +
        ┃      ┃  
        ┃   ━   ┃ ++ + + +
        ████━████  ┃+
        ┃       ┃ +
        ┃   ┻   ┃
        ┃      ┃ + +
        ┗━┓   ┏━┛
          ┃   ┃           
          ┃   ┃ + + + +
          ┃   ┃    Code is far away from bug with the animal protecting       
          ┃   ┃ +     神獸保佑,代碼無bug  
          ┃   ┃
          ┃   ┃  +         
          ┃    ┗━━━┓ + +
          ┃        ┣┓
          ┃       ┏┛
          ┗┓┓┏━┳┓┏┛ + + + +
           ┃┫┫ ┃┫┫
           ┗┻┛ ┗┻┛+ + + +
 '''
import xadmin
#導入xadmin 文件
from .models import Sc_msg
#導入模型類
# from xadmin.plugins.actions import BaseActionView
# class MyAction(BaseActionView):           # action類
#     action_name = 'My_action'
#     description = 'This is my action button'
#     model_perm = 'change'
#
#     def do_action(self, queryset):
#         for obj in queryset:
#         return HttpResponse(obj)
#
#
# class MyModelAdmin(object):
#
#     actions = [MyAction, ]




class Sc_Msgxadmin(object):

    # 自定制action
    def pacth_init(self, request, queryset):
        print('hahaha',request,queryset)
        queryset.update(dqmoney=0)
    pacth_init.short_description ='價格初始化'

    actions =[pacth_init]


    #自定制list_display
    def math_sc(self,obj):
        print(obj.jhhl,obj.sjhl)
        # num1 =obj.sjhl/obj.jhhl
        num1 =obj.jhhl/obj.sjhl
        bb = "%.2f%%" % (num1 * 100)
        return bb

    math_sc.short_description = '總診斷量'


    list_display=['math_sc','hkdate','khname','dqmoney','jhhl','sjhl','hkhll','wwccy','yqhk','cyyi']# 設置默認展示列
    list_editable=['khname','dqmoney'] #設置哪行可以直接編輯
    search_fields = ['khname','dqmoney'] # 設置搜索
    ordering =['-num'] # 設置排序
    list_filter = ['khname','dqmoney']  # 設置過濾項
    # reversion_enable = True
    readonly_fields = ['num'] # 鎖定num 不允許修改
    exclude = ['num'] # 在編輯或者查看的時候不顯示某個字段
    show_detail_fields = ['khname']#在指定的字段后添加一個顯示數據詳情的一個按鈕
    refresh_times = [10, 60]  # 自動刷新時間
    style_fields = {'dqmoney': 'm2m_transfer', 'dqmoney': 'ueditor', }  # 字段顯示樣式
    aggregate_fields = {"dqmoney": "sum"} #  列聚合,在list表格下面會增加一行統計的數據,可用的值:"count","min","max","avg",  "sum"
# 添加數據時候,一步一步提供數據,分塊顯示
    model_icon = 'fa fa-home' # 菜單的樣式
    #
    #
    # grid_layouts = ("cyyi",)  ##列表的布局方式,是以表格一行一條的方式還是類似於縮略圖的方式展示的
    data_charts = {
        "user_count": {'title': u"sc金額變化表折現表",
                       "x-field": "num",
                       "y-field": ("dqmoney",),
                       },
        "num_count": {'title': u"sc金額變化表1柱形表",
                       "x-field": "num",
                       "y-field": ("dqmoney",),
                      'option': {
                          "series": {"bars": {"align": "center", "barWidth": 0.8, "show": True}},
                          "xaxis": {"num": "count", "dqmoney": "categories"}
                      },
                       },
    }
    # data_charts = {
    #     "user_count": {'title': u"sc到期貨款",
    #                    "x-field": "num",
    #                    "y-field": ("jhhl",),
    #                    },
    # }



xadmin.site.register(Sc_msg,Sc_Msgxadmin)





import xadmin
from xadmin import views



# 配置后台主題
class BaseSetting(object):
    enable_themes = True
    use_bootswatch = True


xadmin.site.register(views.BaseAdminView, BaseSetting)
# 后台系統名稱頁腳設置、設置后台菜單為收縮樣式
class GlobalSetting(object):
    site_title = 'sc系統'
    site_footer = 'sc系統'
    menu_style = 'accordion'


xadmin.site.register(views.CommAdminView, GlobalSetting)

樣子

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM