安装
pip install httplib2 django-formtools django-crispy-forms
# setting.py
INSTALLED_APPS = [
...,
'xadmin',
'crispy_forms',
'reversion',
]
# urls.py
import xadmin
xadmin.autodiscover()
from xadmin.plugins import xversion
xversion.register_models()
urlpatterns = [
url(r'^admin/', xadmin.site.urls)
]
一、字段样式
01 list_display 控制列表展示的字段
- list_display中可以添加mdoel类下的自定义函数,比如full_name()
class User(models.Model):
username = models.CharField(max_length=32)
firstname = models.CharField(max_length=15)
lastname = models.CharField(max_length=16)
password = models.CHarField(max_length=100)
def full_name(self):
return self.firstname + self.lastname
full_name.short_description = "全名" # 定义xadmin的显示文字
list_display = ['username', 'full_name', ]
- list_display中可以添加mdoel类下的go_to函数,实现页面跳转
from django.utils.safestring import mark_safe
def go_to(self):
return mark_safe("<a herf="www.baidu.com"></a>")
go_to.short_description = '百度一下'
list_display = ['username', 'full_name','go_to' ]
02 search_fields 控制可以通过搜索框搜索的字段名称,xadmin使用的是模糊查询
03 list_filter 可以进行过滤操作的列
04 ordering 默认排序的字段
- 排序规则
- fieldname 表示按这个字段逆序排序。
05 readonly_fields 在编辑页面的只读字段
06 exclude 在编辑页面隐藏的字段
07 list_editable 在列表页可以快速直接编辑的字段
08 show_detail_fileds 在列表页提供快速显示详情信息
show_detail_fields=['ttdsn'] #在指定的字段后添加一个显示数据详情的一个按钮
09 refresh_times 指定列表页的定时刷新
refresh_times = [10, 60] #自动刷新时间
10 list_export 控制列表页导出数据的可选格式
11 show_bookmarks 控制是否显示书签功能
12 data_charts 控制显示图标的样式
13 model_icon 控制菜单的图标
14 relfield_style = 'fk_ajax' # fk-外键 显示样式
"fk-ajax" : 对于下拉框采用ajax异步搜索加载的方式呈现
"fa-ajax" : ...............待补充
15 date_hierarchy =['publication_date'] #添加过滤(这里是过滤日期)
16 filter_horizontal = ('authors',) 水平排列过滤器
- 从‘多选框’的形式改变为‘过滤器’的方式,水平排列过滤器,必须是一个 ManyToManyField类型,且不能用于 ForeignKey字段,默认地,管理工具使用
下拉框
来展现外键
字段
17 filter_vertical = ['authors',] 垂直排列过滤器
18 raw_id_fields = ['publisher',] #将ForeignKey字段从‘下拉框’改变为‘文本框’显示
18 style_fields 字段显示样式
style_fields = {'csdevice': 'm2m_transfer','csservice': 'ueditor',}
19 free_query_filter=['字段1','字段2',......]
默认为 True , 指定是否可以自由搜索. 如果开启自由搜索, 用户可以通过 url 参数来进行特定的搜索
20 aggregate_fields 列聚合
aggregate_fields = {"expire": "max"} 在list表格下面会增加一行统计的数据,可用的值:"count","min","max","avg", "sum" # 添加数据时候,一步一步提供数据,分块显示。
21 wizard_form_list 分块显示,添加数据时候,一步一步提供数据
wizard_form_list = [ ("基础信息", ("name", "contact", "telphone", "address")), ("其它信息", ("customer_id", "expire", "description")), ]
21 grid_layouts 列表的布局方式
grid_layouts = ("table", "thumbnails") #列表的布局方式,是以表格一行一条的方式还是类似于缩略图的方式展示的
22 list_per_page 每页显示数据的条数
list_per_page = 50 # 每页显示数据的条数
23 list_max_show_all 每页最大显示数据的条数
list_max_show_all = 200 #每页最大显示数据的条数
24 list_export 设置为空列表[],表示不支持导出功能,可以设置一个导出[xls....]等格式的列表
25 preserve_filters 默认情况下,当你对目标进行创建、编辑或删除操作后,页面会依然保持原来的过滤状态。将preserve_filters设为False后,则会返回未过滤状态。
26 view_on_site 这个属性可以控制是否在admin页面显示“View site”的链接。这个链接主要用于跳转到你指定的URL页面。(我还没有试验有什么用处)
27 actions 在类中自定义的函数方法
28 auto_excel_action.short_description='自动化导入数据文件' 函数名描述
29 object_list_template 自定义页面
30 inlines 编辑或查看单个对象时,嵌入编辑或查看外键对象
class SubTypeAttrInline(object):
model = models.SubTypeAttr
extra = 0
style = 'table' # 列表显示,stacked::块显示, table: 表格显示, accordion:缩略列表显示, xadmin/plugins/inline.py
readonly_fields = ('sub_type',)
def has_add_permission(self): # 不允许添加对象
return False
二、全局样式
class GlobalSettings(object):
site_title = '慕学管理系统' # 标题
site_footer = '慕学在线网' # 页尾
menu_style = 'accordion' # 设置左侧菜单 折叠样式
global_models_icon = {"User": "glyphicon glyphicon-user", UserDistrict: "fa fa-cloud"} # 设置models的全局图标
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", "knowledgebase":"fa fa-book","questionanswer":"fa fa-question-circle"}
xadmin.site.register(views.CommAdminView,GlobalSettings)
三、App显示名称(如,用户管理)
(1)每个 app 应用下的 apps.py文件
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'accounts'
verbose_name = '用户管理'
(2)init.py文件
default_app_config = 'accounts.apps.UsersConfig'

四、菜单排序显示
在xadmin\view\base.py中的get_nav_men方法中集成了排序方法,可以自行修改排序方法:
nav_menu.sort(key=lambda x: x['title'])
待整理:
https://blog.csdn.net/cybeyond_xuan/article/details/86300599
https://www.cnblogs.com/pgxpython/p/10217888.html
https://www.jianshu.com/p/6ce6fdcdd8c5
关联数据的显示:https://www.jianshu.com/p/b6ac8d27b745
https://www.cnblogs.com/Mengchangxin/p/10664438.html
https://www.cnblogs.com/zgf-666/p/9161854.html
网友评论