xadmin与自带admin的几个接口上的差异

xadmin与自带admin的几个接口上的差异

1.get_queryset

1
2
3
4
5
6
7
8
9
# admin.py
@admin.register(Environment)
class EnvironmentAdmin(object):
def get_queryset(self, request):
"""函数作用:使当前登录用户只能看到添加人是自己的数据"""
qs = super(EnvironmentAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user=Environment.objects.filter(proposer=request.user))
1
2
3
4
5
6
7
8
9
10
11
# adminx.py
@xadmin.register(Environment)
class EnvironmentAdmin(object):
def get_list_queryset(self):
request = self.request
"""函数作用:使当前登录用户只能看到添加人是自己的数据"""
qs = super().get_list_queryset()

if request.user.is_superuser:
return qs
return qs.filter(user=Environment.objects.filter(proposer=request.user))

2.save_models

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

1
2
3
4
5
6
7
8
# admin.py
@admin.register(Environment)
class EnvironmentAdmin(object):
def save_model(self, request, obj, form, change):
""" 重新定义此函数,提交时自动添加申请人 """

obj.proposer = str(request.user.username)
super(EnvironmentAdmin, self).save_models(request, obj, form, change)

1
2
3
4
5
6
7
8
9
10
# adminx.py
@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()

3.处理inline

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

class MemberInline(admin.TabularInline):
model = Member
extra = 1#默认显示的条目数

inlines = [MemberInline]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# adminx.py
@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]
坚持原创技术分享,您的支持将鼓励我继续创作!