Django2.2 学习笔记 (10)_xadmin实战

1、在相应的app下新建adminx.py文件(文件名一定要是adminx)

2、注册model到xadmin

1)基本设置

# MxOnline/apps/courses/adminx.py

# 导入xadmin
import xadmin        

# 导入courses中的需要注册的模型
from apps.courses.models import Course, Lesson, Video, CourseResource        

# 定义admin_class类
class CourseAdmin(object):
    # list_display 要显示的字段
    list_display = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students']
    # search_fields 显示搜索框,[]是可搜索的字段
    search_fields = ['name', 'desc', 'detail', 'degree', 'students']
    # list_filter 要过滤的字段
    # 对外键里的某个字段进行进行筛选,用两个下划线__(teacher__name)
    list_filter = ['name', 'teacher__name', 'desc', 'detail', 'degree', 'learn_times', 'students']
    list_editable = ["degree", "desc"]

# 注册相应的类
# register(<model>, <admin_class>)
xadmin.site.register(Course, CourseAdmin)

2)如下是admins_class支持的方法(没有逐一亲测)

也可参考Django官方文档中admin的设置    https://docs.djangoproject.com/zh-hans/3.0/ref/contrib/admin/#modeladmin-options

https://blog.csdn.net/asp89007342/article/details/87603290

list_display=[] # 要显示的字段
search_fields=[] # 搜索的字段
list_filter = [] # 可过滤的字段
list_editable = [] # 设置可编辑的字段
date_hierarchy =['publication_date']  #添加过滤(这里是过滤日期)
ordering = ['-publication_date',]   #排序(这里以日期排序,加‘-’表示降序)
filter_horizontal = ('authors',) #filter_horizontal 从‘多选框’的形式改变为‘过滤器’的方式,水平排列过滤器,必须是一个 ManyToManyField类型,且不能用于 ForeignKey字段,默认地,管理工具使用`` 下拉框`` 来展现`` 外键`` 字段
filter_vertical = ['authors',]#同上filter_horizontal,垂直排列过滤器
raw_id_fields = ['publisher',] #将ForeignKey字段从‘下拉框’改变为‘文本框’显示
list_editable = ['csdevice'] #在列表页可直接编辑的字段
model_icon = 'fa fa-user-secret'  #图标样式
style_fields = {'csdevice': 'm2m_transfer','csservice': 'ueditor',} #字段显示样式
refresh_times = [10, 60] #自动刷新时间
show_detail_fields=['ttdsn'] #在指定的字段后添加一个显示数据详情的一个按钮
relfield_style = 'fk-ajax' #涉及到外键下拉的时候使用ajax搜索的方式而不是全部列出的方式,比如在分类下拉很多的情况下,这个功能就很好用
free_query_filter=['字段1','字段2',......]#默认为 True , 指定是否可以自由搜索. 如果开启自由搜索, 用户可以通过 url 参数来进行特定的搜索
exclude=['字段1','字段2',......]#隐藏字段
aggregate_fields = {"expire": "max"}#  列聚合,在list表格下面会增加一行统计的数据,可用的值:"count","min","max","avg",  "sum"
# 添加数据时候,一步一步提供数据,分块显示
wizard_form_list = [
        ("基础信息", ("name", "contact", "telphone", "address")),
        ("其它信息", ("customer_id", "expire", "description")),
    ]
grid_layouts = ("table", "thumbnails") #列表的布局方式,是以表格一行一条的方式还是类似于缩略图的方式展示的
list_per_page = 50 # 每页显示数据的条数
list_max_show_all = 200 #每页最大显示数据的条数

3、将目录中的英文换成中文(设置app的中文名称)

## MxOnline/apps/courses/apps.py

from django.apps import AppConfig

class OrganizationsConfig(AppConfig):
    name = 'apps.organizations'
    verbose_name = "机构管理"    # 新增

4、xadmin的全局设置

# 任选一个adminx.py进行配置即可

import xadmin

class GlobalSettings(object):
    site_title = "慕学后台管理系统"    # 设置页眉
    site_footer = "慕学在线网"         # 设置页脚
    # menu_style = "accordion"        # 设置后台菜单为收缩样式

# 是否可以自选主题
class BaseSettings(object):
    enable_themes = True        
    use_bootswatch = True

# 注册相应的类
xadmin.site.register(xadmin.views.CommAdminView, GlobalSettings)
xadmin.site.register(xadmin.views.BaseAdminView, BaseSettings)

5、一个小备注:关于上传路径

1)直接在上传路径中增加【media/】

image = models.ImageField(verbose_name="封面图", upload_to="media/courses/%Y/%m", max_length=100)

ps:如果不增加的media/路径的话,上传文件会直接在主目录下创建courses/文件夹,并保存相应图片等内容

2)如下似乎是就不用在上传路径中增加【media/】,上传的文件也会存到media目录下,但木有亲测

在settings.py文件增加以下代码:

MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

urls.py文件增加路由设置:

from django.conf.urls import url
from django.conf import settings
from django.views.static import serve
urlpatterns = [
    url('^media/(?P<path>.*)$', serve, {"document_root": settings.MEDIA_ROOT}),
]

6、更多(未亲测,亲测后再写详细笔记):

1)自定义action动作  https://blog.csdn.net/qq_35899407/article/details/81982149

2)使用xadmin后台上传表格  https://www.jianshu.com/p/ce99055f5859

3)集成富文本编辑器ueditor  https://www.cnblogs.com/welan/p/9460721.html

end
 

发布了18 篇原创文章 · 获赞 0 · 访问量 571

猜你喜欢

转载自blog.csdn.net/zhsworld/article/details/103843381