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