美文网首页
xadmin的adminx进阶写法

xadmin的adminx进阶写法

作者: Aedda | 来源:发表于2019-07-16 16:53 被阅读0次
    • adminx.py参数
        # 用户管理的图标, 默认是圆圈,丑
        model_icon = 'fa fa-home'
    
        # 显示的列,对应model相应字段名
        list_display = ['id', 'name', 'pwd', 'job_number', 'phone', 'get_report_month_nums', 'get_report_all_nums']
    
        # 过滤器,用于查找,这是xadmin的强大之处
        list_filter = ['job_number', 'name', 'phone']
    
        # 搜索字段
        search_fields = ['job_number', 'name', 'phone']
    
        # 每页显示的数据行数
        list_per_page = 20
    
        # 类似<a 的href
        list_display_links = ['id']
    
        # list_display 指定xadmin中需要显示哪些字段信息,以列表显示
        list_display = ['first_name', 'last_name', 'email']
     
    
        #search_fields 指定哪些字段信息可以被搜索
        search_fields = ['first_name', 'last_name']
     
    
        # list_filter 添加哪些字段需要进行过滤显示(添加过滤器)
        list_filter = ('publication_date',)  #添加过滤(这里是过滤日期)
     
    
        # date_hierarchy  添加日期过滤器,该字段只能是日期类型
        date_hierarchy = 'publication_date'   #过滤(日期的另外一种过滤方式,可以添加后看一下)
     
    
        # ordering  显示的列表以什么进行排序 ,加‘-’表示降序
        ordering = ('-publication_date',)   #排序(这里以日期排序,加‘-’表示降序)
     
    
        # fields 排除一些不想被其他人编辑的fields,不包含在内的字段不能编辑
        fields = ('title', 'authors', 'publisher')
     
    
        #  filter_horizontal 从‘多选框’的形式改变为‘过滤器’的方式,水平排列过滤器,必须是一个 ManyToManyField类型,且不能用于 ForeignKey字段,默认地,管理工具使用`` 下拉框`` 来展现`` 外键`` 字段
        filter_horizontal = ('authors',)
     
    
        # filter_vertical #同上filter_horizontal,垂直排列过滤器
        filter_vertical = ('authors',)
     
    
        #  raw_id_fields 将ForeignKey字段从‘下拉框’改变为‘文本框’显示
        raw_id_fields = ('publisher',)
     
    
        #  list_editable 列表显示的时候,指定的字段可以直接页面一键编辑
        list_editable = ['csdevice']
     
    
        #  model_icon 指该表菜单的icon样式
        model_icon = 'fa fa-user-secret'
     
    
        #  readonly_fields 指定一些字段为只读,不可修改
        readonly_fields = ('cservice',)
     
    
        # exclude 在编辑和查看列表时指定不显示的字段
        exclude = ['cservice']
     
    
        #  style_fields 指定xadmin插件的样式
        style_fields = {'csdevice': 'm2m_transfer','csservice': 'ueditor',}
     
    
        #  refresh_times 后台可选择10秒刷新一次或者60秒刷新一次如下
        refresh_times = [10, 60]
     
    
        #  show_detail_fields 在指定的字段后添加一个显示数据详情的一个按钮
        show_detail_fields=['ttdsn']
     
    
        #  relfield_style后台自定义不是下拉选择框,而是搜索框(解决了为什么用户不是下拉框的问题。。)
        relfield_style = 'fk-ajax'
    
        # 点击按钮
        actions=['to_excel']
    
    
    • admin.py这么写
    import xadmin
    from msdiagnosis import models
    
    
    class ReportAdmin(object):
       model_icon = 'fa fa-home'
       list_display = ['id', 'user', 'get_job_number', 'report_date']
       list_filter = ['report_date', 'user']
       # 这里需要注意的是, 在报告页面,不仅可以根据外键查询,
       # 还可以根据用户的其他列查询,比如姓名,工号
       # 注意书写方式,双下划线 user__name
       search_fields = ['user__id', 'user__name', 'user__job_number']
       list_per_page = 20
       list_display_links = ['id']
    
       # 自定义显示列, 是用户的工号,在reprot数据库的表中,其实是没有这一列的
       def get_job_number(self, obj):
           return '%s' % obj.user.job_number
       get_job_number.short_description = '外勤工号'
    
    
    xadmin.site.register(models.Report, ReportAdmin)
    
    

    自定义外表显示列(显示其他表中的列)

        def show_storetime(self, obj):
            return b_store_log.objects.filter(NID=obj.StoreID).first().StoreName
    
        show_storetime.short_description = u'仓库'
    
    #adminx.py文件
    #由time表的tid连接到teacher表的tname
    
    @xadmin.sites.register(models.order)
    class TimeAdmin(object):
        list_display = ('tid','get_tname',)
    
        def get_tname(self, obj):
            return '%s' % obj.tid.tname #☆☆☆☆☆
        get_tname.short_description = '老师'
    
    • 显示自定义列
    from django.utils.safestring import mark_safe
    
    class t_pic_upload_Admin(object):
        list_display = ['id', 'show_SourcePicPath', ]
        
            def show_SourcePicPath(self, obj):
                if obj.upload_path is None:
                    obj.upload_path = ''
                rt = '<img src="%s"  width="150" height="150"  alt = "%s"  title="%s"  />  ' % (
                obj.upload_path, obj.upload_path, obj.upload_path)
                return mark_safe(rt)
    
    1. 修改 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)
    
    1. 页面显示中文和时区
    在settings.py中配置
    # LANGUAGE_CODE = 'en-us'
    LANGUAGE_CODE = 'zh-hans'
      
    # TIME_ZONE = 'UTC'
    TIME_ZONE = 'Asia/Shanghai'
    
    1. 设置xadmin的app标题,在apps.py文件中,添加verbose_name = "客户管理"
    from django.apps import AppConfig
    class CustomersConfig(AppConfig):
        name = 'apps.customers'
        verbose_name = "客户管理"
    

    注意需要在settings.py中添加的'customers.apps.CustomersConfig',(需要把apps 中已 mark directory as source root)

    INSTALLED_APPS = [
        'xadmin',
        'crispy_forms',
        'reversion',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'rest_framework',
        'customers.apps.CustomersConfig',
    ]
    

    相关文章

      网友评论

          本文标题:xadmin的adminx进阶写法

          本文链接:https://www.haomeiwen.com/subject/dyutlctx.html