基础用法
model_icon = "fa fa-folder" # 图标list_display = ('title', 'type', 'operations') # 列表显示字段list_display_links = ('title',) # 链接字段# search_fields = () # 搜索字段# list_filter = () # 过滤字段readonly_fields = ('path',) # 只读字段ordering = ('-id',) # 列表排序# exclude = () # 隐藏字段# relfield_style = 'fk-ajax # 外键使用时,不一次性加载所有数据,已搜索+ajax方式获取# list_editable = () # 可在连表页编辑的字段form = CategoryForm # 设置formuse_related_menu = False # 禁用relate插件hidden_menu = True # 不在菜单中显示Admin: # 可重写view中方法self.form # form 类self.form_obj # form对象List_display_links = None #禁用编辑链接 def has_add_permission(self, request): # 禁用添加按钮 return False def has_delete_permission(self, request, obj=None): # 禁用删除按钮 return False def get_actions(self, request): # 在actions中去掉‘删除’操作 actions = super(GradesManagementAdmin, self).get_actions(request) if request.user.username[0].upper() != 'J': if 'delete_selected' in actions: del actions['delete_selected'] return actions
form_layout 使用
# 导入相关from xadmin.layout import Main, Fieldset, Row, Side# xxxxAdmin中定义form_layout = ( Main( # 里面的内容在中间显示,主显示区域 # 里面可写Fieldset Fieldset('标题', '字段1', '字段2',..., '字段n'), # 可有多个fieldset 每个fieldset为单独的一个 panel Fieldset( '标题2', Row('字段1', '字段2') # 字段1 字段2 将 ) ), Side( # 里面的内容在右边显示 ))
自定义页面
1. 创建view
# views.pyfrom xadmin.views import CommAdminViewclass TestView(CommAdminView): """ 可根据情况基础xadmin其他view类,如表单FormAdminView等 重新请求方法 """ def get(self, request): """ get 请求 """ # 获取xadmin默认的context数据 context = super().get_context() title = "测试页面" context["breadcrumbs"].append({'url': '', 'title': title}) # 设置面包屑 context["title"] = title # 设置标题 // ... return render(request, 'test.html', context)
2. 创建模板
<!-- test.html -->{% extends 'xadmin/base_site.html' %}{% load i18n %}{% load crispy_forms_tags %}{% load xadmin_tags %}{% block extrastyle %} <!-- 加载自定义css样式 或编写 css样式, 其它标签可查看base_site.html文件进行修改 --> {% vendor 'xadmin.form.css' %}{% endblock %}{% block content-nav %}{% endblock %}{% block content %}这是test页面内容{% endblock %}{% block extrabody %} {% vendor 'xadmin.plugin.portal.js' 'xadmin.page.form.js' %}{% endblock %}
3. 修改菜单 和 将TestView url注册到xadmin中
# adminx.pyimport xadminfrom xadmin import viewsfrom . import modelsfrom .views.admin import WebsiteOptions@xadmin.sites.register(views.CommAdminView)class GlobalSetting: def get_site_menu(self): """ 从写该方法,返回自定义菜单数据 xadmin get_nav_menu()方法自动生成菜单前会调用该方法 return list perm 调用了 get_model_perm()方法 返回的是 : '%s.%s_%s' % (model._meta.app_label, name, model._meta.model_name) [{'title': 'apps.py中第一的名称', 'menus': [{'title': '菜单1', 'url': 'url', 'icon': None, 'perm': '', 'order': 7}, ...],'first_url': '第一个菜单url'}, ...] """ // ... 具体格式 return menu_list def change_site_menu(self, site_menu): """ 该方法为自己添加的在 get_nav_menu()方法 返回菜单前执行 用户修改现有菜单数据 """ # 在websiteAPP下添加新菜单 site_menu[0]['menus'].append({ 'title': '测试页面', 'url': '/admin/website/test/', 'icon': None, 'order': 0}) return site_menu# 将 TestView url注册到xadmin中xadmin.site.register_view('website/test/', TestView, name='test')