二、xadmin----簡單使用


1、中文設置:

  settings.py中直接配置:

    LANGUAGE_CODE = "zh-hans"

    TIME_ZONG = "Asia/Shanghai"

2、菜單折疊:

  在users/xadmin.py中添加GLOBALSETTINGS

  from xadmin import views

  class GlobalSettings(object):

    site_title = "頭部名稱"

    site_footer = "腳部名稱"

    menu_style = "accordion" # 菜單折疊

    apps_icons = {"appname":"icon"}  #設置app的顯示圖標

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

  

3、頁面布局定制:

  class UserAdmin(object):

    def get_form_layout(self):

      if self.org_obj:

        self.form_layout = (

          Main(

            Filedset('',

              'username', 'password', css_class="unsort no_title"

            ),

            Fieldset(_('Personal info'),

              Row('firstname', 'lastname'), email

            ),

            Fieldset(

              _('permissions'),

              'grounps', 'userpermissions'

            ),

            Fieldset(

              _('important dates'),

              'last_login', 'date_joined'

            ),

          ),

          Side(

            Fieldset(

              _('status'),

              'is_active', 'is_stuff', "is_superuser"

            )

          )

        )

      return self.super(UserAdmin, self).get_form_layout()

  

4、更改圖標

  更改app圖標 通過app_icons來設置

class GlobalSetting(object):
    site_title = "上海諾行信息技術有限公司"
    site_footer = "COPYRIGHT © 2010 - 2018 ALL RIGHTS RESERVED"
    menu_style ="accordion"
    apps_icons = {"home":"fa fa-home", "products":"", "companyintroduction":"", "certifications":"fa fa-certificate",
                  "contactus":"fa fa-phone", "forum":"","logisticinformation":"",
                  "sourcedownload":"fa fa-download","trade":"fa fa-shopping-cart","users":"fa fa-user",
                  "wechatuser":"fa fa-user"}

更改model圖標,通過model_icon來設置
class relativeFilesAdmin(object):
    model = relativeFiles
extra = 0
model_icon = "fa fa-download"
inField = "company"

可選的圖標可查看 font awesome,可自行下載最新的圖標包來替換現有的

font awesome : http://fontawesome.dashgame.com/

 

 5、顯示排序

  通過ordering配置

  class ProductListAdmin(object):

    ...

    ordering = ["sales_num",]

 

6、只讀字段:

  readonly_fields = ["",""],如果想要自定義只讀字段顯示方式,可以重寫get_readonly_fields():函數

 

7、不包含及不在list列表界面顯示

  exclude = ["",""]

  注意,exclude和readonly_fields是沖突的,配置了readonly_fields,則exclude是無效的

 

8、inlineAdmin嵌套編輯

  假設A是B的外鍵

  class AAdmin(object):

    model = A

    extra = 1

  class BAdmin(object):

    list_display = ["",""]

    inlines = [A,]

  這樣在編輯B的時候,就可以同時對A進行增刪改查

  但是要注意一個問題,這里的A,里面一定要寫明model =A,不能像B寫list_display = [""],否則會報錯 'NoneType' object has no attribute '_meta'

  extra:表示的是在編輯B的時候,展示幾個A的可編輯框。不設置的話默認是3個,設置為0的話,則表示A編輯框是收起的。

    

 

 9、兩個管理器管理一張表

  對於A 繼承B 的情況,我們可以對A和B使用同一張表來管理,而不用分別為A和B建立表

  

10、Xadmin中的View對應含義:

  1)views-->base.py:

    BaseAdminView:所有的AdminView的基類,繼承自BaseAdminObject和Djano.views.generic.View,注冊在該View上的插件 可以影響所有的AdminView,對應的模板是 base.html

    CommAdminView:繼承於BaseAdminView,此類是用戶登錄后顯示用到的View,也是登錄后所有View的基類。該類的主要作用是創建Xadmin的通用元素,如系統菜單,用戶信息等全局設置。

      所有 關於菜單,列表界面顯示的樣式等 都可以在此類中完成設置,如上面2中設置全局的屬性用到的就是此基類。

      此基類對應的模板為:base_site.html, include/sitemenu_default.html

    ModelAdminView:基於model的AdminView的基礎類,注冊的插件可以影響所有基於model的view

      如我們在model里面設置的verbose_name,注冊model時設置的model_icon等 通過在此類中展示

  2)views-->list.py

    ListAdminView:model列表頁面view,它實現了數據排序和分頁功能

    包含的可選擇設置屬性:

      list_display = []  | ()  可以是列表或者元組,設置要在list界面展示的字段

      list_display_link = () 設置作為鏈接去展示詳情的字段

      search_fields = ()   設置搜索字段

      ordering = ()  設置排序字段

  3)views-->edit.py

    ModelFormAdminView:model編輯頁面View

    此類是一個基類,CreateAdminView和UpdateAdminView繼承自此類

    options 屬性:

      readonly_fields = ()  #定義只讀字段

      exclude = ["",""]  #定義的字段不會顯示在編輯界面,但是和readonly_fields使用沖突,定義了readonly_fields的字段再定義exclude是無效的

      style_fields = ()  #定義該字段樣式 如 style_fields= ("content":"ueditor"),以富文本方式展示

      save_as  = True/False  #是否顯示另存為按鈕

      form_layout = ()  #可以自定義detail界面的樣式:        

        def get_form_layout(self):
        self.form_layout = (
        Main(
        Fieldset("title",
                  Row("name", "index"),
                  "link"
               ),
               Fieldset("title",
                  Row("name", "index"),
                  "link"
               ),
                ),
            Side(...)
        )
        return super(modelAdmin, self).get_form_layout()
      relfield_style = "fk-ajax"  # 對於下拉框采用ajax異步搜索加載的方式呈現
      list_editable = ["",""]    #直接以可編輯的方式展示,無需點開詳情界面即可編輯

    CreateAdminView(ModelFormAdminView): model創建頁面View

    UpdateAdminView(ModleFormAdminView):model修改頁面View

  4)views--->delete.py

    DeleteAdminView(ModelFormAdminView):mode刪除頁面View

  5)views---->detail.py

    DetailAdminView(ModelFormAdminView):model詳情頁面View

 

  




免責聲明!

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



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