django後臺xadmin以下配置(小結)

django-admin文檔:https://xadmin.readthedocs.io/en/latest/index.html
目錄:css

    一、xadmin基本配置html

    二、配置後臺顯示的模型類git

    三、後臺註冊模型類github

    四、修改後臺應用、字段顯示的名字數據庫

    五、修改應用在後臺顯示的名字django

    六、修改admin後臺顯示的圖標,如應用的圖標和表的圖標。app

    七、自定義user用戶管理ssh

    八、後臺顯示數據庫中不存在的字段函數

    九、save_models 和 delete_model網站

安裝最新的xadmin 

pip install https://github.com/sshwsfc/xadmin/tarball/master
在django中註冊xadmin應用

# 安裝 xadmin 如下三個 應用
'xadmin',
'crispy_forms',
'reversion',
添加路由

# 註釋掉 django 自帶的 admin路由
# url(r'^admin/', admin.site.urls),
url(r'xadmin/', include(xadmin.site.urls)),
編寫adminx.py 文件

一、配置基本信息

class BaseSetting(object):
"""xadmin的基本配置"""
enable_themes = True # 開啓主題切換功能
use_bootswatch = True

 

class GlobalSettings(object):
"""xadmin的全局配置"""
site_title = "xx運營管理系統" # 設置站點標題
site_footer = "xx科技有限公司" # 設置站點的頁腳
menu_style = "accordion" # 設置菜單摺疊


xadmin.site.register(views.CommAdminView, GlobalSettings)
xadmin.site.register(views.BaseAdminView, BaseSetting)
二、配置後臺顯示的模型類


"""
list_display 控制列表展現的字段
search_fields 控制能夠經過搜索框搜索的字段名稱,xadmin使用的是模糊查詢
list_filter 能夠進行過濾操做的列
ordering 默認排序的字段
readonly_fields 在編輯頁面的只讀字段
exclude 在編輯頁面隱藏的字段
list_editable 在列表頁能夠快速直接編輯的字段
show_detail_fileds 在列表頁提供快速顯示詳情信息
refresh_times 指定列表頁的定時刷新
list_export 控制列表頁導出數據的可選格式
show_bookmarks 控制是否顯示書籤功能
data_charts 控制顯示圖標的樣式
model_icon 控制菜單的圖標

"""
# Objects 模型類名
class ObjectsAdminModel(object):
# def save_model
list_display = ['name','create_date','update_date','verified_reason','is_delete','categry','title','image','location']
list_filter= ['location','categry']
# data_charts= 'drivers-license-o'
search_fields = ['id', 'name']
# model_icon = 'fa fa-user-o'
list_editable = ['name']

三、後臺註冊模型類

xadmin.site.register(views.Objects, ObjectsAdminModel)
四、修改後臺應用、字段顯示的名字

# 在 django的models.py 文件中
class classname(models.Model):
name = models.CharField(max_length=20,unique=True,verbose_name='字段名字')

class Meta:
db_table = 'table name' # 數據庫中以這個名字建立數據表
verbose_name = '表名' # 後臺顯示的表名
verbose_name_plural = '表名' # 後臺顯示的表名複數 英語複數是加s 這裏咱們寫死爲 要顯示的表名
五、修改應用在後臺顯示的名字

# 在 應用模塊下的apps.py 文夾下

class xxxConfig(AppConfig):
name = 'xxx'
verbose_name = 'xx信息'
# 應用 下的 __init__.py 文件
default_app_config = "應用.apps.應用Config" # 應用的路徑
六、修改admin後臺顯示的圖標,如應用的圖標和表的圖標。

去到這個網站下載最新的圖標文件  http://fontawesome.dashgame.com/

替換xadmin的原來的圖標文件

 

修改xadmin的圖標文件

 

去到 http://fontawesome.dashgame.com/ 找到合適的圖標樣式 點擊 圖標邊上的 複製按鈕  複製圖標的css樣式名字

Django的adminx.py 文件中修以下 

 

 model_icon = 'fa 複製來的css樣式名字'

 

修改完後xadmin後臺樣式

 

比原來的圓圈 圖標好看多了

七、最後關於user 應用   Django是自帶用戶管理的,xadmin也會自動註冊user,若要自定義用戶模型類,須要在xadmin 註銷user再註冊,後臺纔會顯示新註冊的user模型類,沒註銷就註冊user會報錯

 

先註銷後註冊

xadmin.site.unregister(User)
xadmin.site.register(User, UserAdmin)
 

import xadmin
# Register your models here.

from .models import User
from xadmin.plugins import auth


class UserAdmin(auth.UserAdmin):
list_display = ['id', 'username', 'mobile', 'email', 'date_joined']
readonly_fields = ['last_login', 'date_joined']
search_fields = ('username', 'first_name', 'last_name', 'email', 'mobile')
style_fields = {'user_permissions': 'm2m_transfer', 'groups': 'm2m_transfer'}

def get_model_form(self, **kwargs):
if self.org_obj is None:
self.fields = ['username', 'mobile', 'is_staff']

return super().get_model_form(**kwargs)


xadmin.site.unregister(User)
xadmin.site.register(User, UserAdmin)
八、後臺顯示模型類不存在的字段。

     需求以下:訂單信息中顯示商品,可是咱們知道訂單和訂單中的商品是分開兩個表儲存的,經過外鍵關聯起來。那如何在訂單信息中顯示所包含的商品呢?

        1、在訂單中再添加一個字段,保存該訂單全部商品的簡單信息。

        2、不修改數據庫字段,而是在後臺顯示時多顯示一字段(顯示改訂單的全部商品的基本信息)

第二種方法的代碼以下:自定義一個顯示字段(get_goods),該字段必須爲只讀(readonly_fields)纔會顯示出來。

class OrdersAdminModel(object):


def get_goods(self,obj):
goods_queryset = obj.ordergoods_set.all()
return str(["商品%s:%s 單價:%s 元"%(i.goods.id,i.goods.name,i.goods.price) for i in goods_queryset])
get_goods.short_description = '購買的商品'

list_display = ['order_id','user','status','get_goods']
readonly_fields = ("order_id",'get_goods')
九、django自帶的admin是有save_models和delete_model的,後臺修改模型類後就會執行改函數,xadmin中以下

def save_models(self):

#新的對象 obj = self.new_obj #能夠在這裏面寫些邏輯 # 保存該對象 obj.save()

相關文章
相關標籤/搜索