xadmin提供的功能列表

xadmin提供的功能列表

1.xadmin提供的基础功能

1.支持无缝替换Django自带的admin
数据显示:list_display、exclude = ('recommend',)、show_detail_fields、list_per_page、
         list_editable #设置哪些字段可以在表页面快速编辑
过滤器和搜索字段:list_filter、search_fields、
表图标:model_icon = 'fa fa-list'
排序:ordering = ('-publish_time',)#ordering设置默认排序字段,负号表示降序排序
#设置哪些字段可以点击进入编辑界面
list_display_links = ('id', 'caption')
2.model_icon = 'fa fa-list'
3.refresh_times = [] # 自动刷新功能,单位是秒

2.自定义Form表单提交

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class MemberForm(forms.ModelForm):
# def __init__(self):
name1 = forms.RegexField(
regex='^[0-9A-Za-z]{3,12}$',
min_length=3,
max_length=12,
required=True,
help_text='请输入域账号',
label="用户1",
# style={'input_type': 'password'},
error_messages={'required': '域账号不能为空.',
'invalid': '域账号有且只包含数字,字母',
'min_length': '域账号长度不能小于3个字符',
'max_length': '域账号长度不能大于12个字符',
}
)
class MemberAdmin(object):
list_display = ["name1", "group"]
form = MemberForm

3.通过当前登录的用户过滤显示的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# get_queryset
@xadmin.register(Environment)
class EnvironmentAdmin(object):
def get_list_queryset(self):
request = self.request
"""函数作用:使当前登录用户只能看到添加人是自己的数据"""
qs = super(EnvironmentAdmin, self).get_queryset(request)
qs = super().get_queryset()

if request.user.is_superuser:
return qs
return qs.filter(user=Environment.objects.filter(proposer=request.user))
# get_readonly_fields
@xadmin.register(Environment)
class EnvironmentAdmin(object):
readonly_fields = [ 'green_status', 'yellow_status']
def get_readonly_fields(self, request, obj=None):
""" 重新定义此函数,限制普通用户所能修改的字段 """
if request.user.is_superuser:
self.readonly_fields = []
return self.readonly_fields

4.数据保存时进行一些额外的操作

1
2
3
4
5
6
7
8
9
@xadmin.register(Environment)
class EnvironmentAdmin(object):
def save_models(self):
""" 重新定义此函数,提交时自动添加申请人 """
obj = self.new_obj
# obj.location.user
request = self.request
obj.proposer = str(request.user.username)
super(EnvironmentAdmin, self).save_models()

5.页面组装,一对多字段,编辑父表同时编辑子表

1
2
3
4
5
6
7
8
9
10
11
12
13
@xadmin.register(Group)
class MyGroupAdmin(object):
search_fields = ('name',)
ordering = ('name',)
style_fields = {'permissions': 'm2m_transfer'}
model_icon = 'fa fa-group'

class MemberInline(object):
model = Member
extra = 1 #默认显示的条目数
style = "accordion"# \xadmin\plugins\inline.py

inlines = [MemberInline]

6.主题和全局设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 主题功能
import xadmin
from xadmin import views

@xadmin.register(views.BaseAdminView)
class BaseSetting(object):
enable_themes = True
use_booswatch = True
# 全局设置
@xadmin.register(views.CommAdminView)
class GlobalSetting(object):
site_title = "xxx"
site_footer = "xxx"
menu_style = "accordion"
global_add_models=[]
global_search_models =[]
# 首页设置
@xadmin.sites.register(views.website.IndexView)
class MainDashboard(object):
widgets = [
[
{"type": "html", "title": "网络状态统计",
"content": "<div id='page'></div><script>$('#page').load('http://xxx/chart/');</script>"},
{"type": "list", "model": "environments.Environment", "params": {"o": "-add_time"}},
],
[
{"type": "qbutton", "title": "Quick Start",
"btns": [{"model": Environment}, {"title": "发送告警邮件", "url": "http://xxx/sendEmail/"}]},
{"type": "addform", "model": Environment},
]
]
坚持原创技术分享,您的支持将鼓励我继续创作!