转载自:https://xadmin.readthedocs.org/en/latest/views_api.html
Views
-
class
xadmin.views.
BaseAdminObject
-
提供给 BaseAdminView 和 BaseAdminPlugin 的通用基类,主要是提供了一些常用的通用方法
-
get_admin_url
(
name,
*args,
**kwargs
)
-
便捷方法,方便的通过 name 取得 url,会加上 AdminSite.app_name 的 url namespace
-
get_form_params
(
new_params=None,
remove=None
)
-
将当前 request 的参数,新加或是删除后,生成 hidden input。用于放入 HTML 的 Form 中。
参数: - new_params – 要新加的参数,该参数为 dict
- remove – 要删除的参数,该参数为 list, tuple
-
get_model_perm
(
model,
name
)
-
获取 Model 的某种权限标签,标签的格式为:
>>> view.get_model_perm(User, 'view') >>> 'auth.user_view'
-
get_model_url
(
model,
name,
*args,
**kwargs
)
-
便捷方法,方便的通过 model, name 取得 url,会自动拼成 urlname,并会加上 AdminSite.app_name 的 url namespace
-
get_model_view
(
view_class,
model,
*args,
**kwargs
)
-
获取 ModelAdminViewClass 的实例。首先通过 AdminSite 取得 model 对应的 OptionClass,然后调用 get_view() 方法
参数: - view_class – ModelAdminViewClass 的类
- model – 绑定的 Model 类
-
get_query_string
(
new_params=None,
remove=None
)
-
在当前的query_string基础上生成新的query_string
参数: - new_params – 要新加的参数,该参数为 dict
- remove – 要删除的参数,该参数为 list, tuple
-
get_view
(
view_class,
option_class=None,
*args,
**kwargs
)
-
获取 AdminViewClass 的实例。实际上就是调用 get_view_class() 方法
参数: - view_class – AdminViewClass 的类
- option_class – 希望与 AdminViewClass 合并的 OptionClass
-
has_model_perm
(
model,
name,
user=None
)
-
判断当前用户是否有某个 Model 的 某种权限,例如:
>>> view.has_model_perm(User, 'view') >>> True
-
render_response
(
content,
response_type='json'
)
-
便捷方法,方便生成 HttpResponse,如果 response_type 为 json 会自动转为 json 格式后输出
-
static
(
path
)
-
xadmin.util.static() 的快捷方法,返回静态文件的 url。
-
template_response
(
template,
context
)
-
便捷方法,方便生成 TemplateResponse
-
-
class
xadmin.views.
BaseAdminPlugin
(
admin_view
)
-
所有 Plugin 的基类。继承于 BaseAdminObject 。插件的注册和使用可以参看 xadmin.sites.AdminSite.register_plugin() ,插件的原理可以参看 filter_hook() :
-
filter_hook
(
func
)
-
表明 AdminView 的方法可以被插件插入的装饰器。执行使用了该装饰器的方法时,会按照以下过程执行:
-
首先将实例的 plugins 属性取出,取出含有同样方法名的插件
-
按照插件方法的 priority 属性排序
-
顺序执行插件方法,执行插件方法的规则:
-
如果插件方法没有参数,AdminView 方法的返回结果不为空则抛出异常
-
如果插件方法的第一个参数为 __ ,则 AdminView 方法将作为第一个参数传入,注意,这时还未执行该方法,在插件中可以通过 __() 执行,这样就可以实现插件在 AdminView 方法执行前实现一些自己的逻辑,例如:
def get_context(self, __): c = {'key': 'value'} c.update(__()) return c
-
如果插件方法的第一个参数不为 __ ,则执行 AdminView 方法,将结果作为第一个参数传入
-
-
最终将插件顺序执行的结果返回
-
-
init_request
(
*args,
**kwargs
)
-
插件的初始化方法,Plugin 实例化后被调用的第一个方法。该方法主要用于初始化插件需要的属性,同时判断当前请求是否需要加载该插件,例如 Ajax插件的实现方式:
def init_request(self, *args, **kwargs): return bool(self.request.is_ajax() or self.request.REQUEST.get('_ajax'))
当返回值为 False 时,所属的 AdminView 实例不会加载该插件
-
-
class
xadmin.views.
BaseAdminView
(
request,
*args,
**kwargs
)
-
所有 AdminView 的基类。继承于 BaseAdminObject 和 django.views.generic.View
该类是 xadmin 中 最核心 的类,所有的 AdminView 都需要继承此类。xadmin 与 Django Admin最大的区别就在于 xadmin 每次请求会产生一个 AdminView 的实例,也就是基于 Class 的 view 方式。该方式在 Django 1.3 被实现,可以参看 Django 的官方文档Class-based generic views
使用 Class 的方式实现的好处显而易见。首先,每一次请求都会产生一个新的实例,这样 request 这种变量就可以保存在实例中,基类的扩展,或是复写父类方法时再也不用带着 request 到处跑了,当然,除了 request 还有很多可以基于实例存储的变量。
其次,基于实例的方式非常方便的实现了插件功能,而且还能实现插件的动态加载,因为每个 AdminView 实例可以根据自身实例的属性情况来判断加载哪些插件,具体信息也可以参看 BaseAdminPlugin 的描述。
实现一个自己的 AdminView 类很简单,举例如下:
from xadmin.sites import site from xadmin.views import BaseAdminView class MyAdminView(BaseAdminView): def get(self, request, *args, **kwargs): pass site.register_view(r'^me_test/$', MyAdminView, name='my_test')
而后您就可以在 me_test/ 访问到该view了。当然xadmin同事提供了一些通用的 AdminView,分别为
- CommAdminView : xadmin通用界面的基础View,提供了xadmin通用界面需要的一些数据(菜单等)
- ModelAdminView : 核心类之一,提供了基于 Model 的 AdminView。
-
classmethod
as_view
(
)
-
复写了 View.as_view() 方法,主要是将 View.dispatch() 的也写到了本方法中,并且去掉了一些初始化操作,因为这些初始化操作在 AdminView 的初始化方法中已经完成了,可以参看 BaseAdminView.init_request()
-
get_context
(
*args,
**kwargs
)
-
filter_hook
返回显示页面所需的 context 对象。
-
get_media
(
*args,
**kwargs
)
-
filter_hook
取得页面所需的 Media 对象,用于生成 css 和 js 文件
-
init_plugin
(
*args,
**kwargs
)
-
AdminView 实例中插件的初始化方法,在 BaseAdminView.init_request() 后调用。根据 AdminView 中的 base_plugins 属性将插件逐一初始化,既调用 BaseAdminPlugin.init_request() 方法,并根据返回结果判断是否加载该插件。最后该方法会将初始化后的插件设置为 plugins 属性。
-
init_request
(
*args,
**kwargs
)
-
一般用于子类复写的初始化方法,在 AdminView 实例化时调用,:class:BaseAdminView 的该方法不做任何操作。
-
class
xadmin.views.
CommAdminView
(
request,
*args,
**kwargs
)
-
基于 BaseAdminView 提供的通用 AdminView。主要是完成了一些 xadmin 页面通用内容的处理。主要有:
- 网站标题
- 全局的 Model 图标
- 网站菜单
View属性:
-
site_title
= None
-
网站的标题
-
globe_models_icon
= {}
-
全局的 Model 图标:
globe_models_icon = {User: 'user-icon'}
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params :
site_title : 使用 site_title 属性,默认为 “Django Xadmin”
nav_menu : 权限过滤后的系统菜单项,如果在非 DEBUG 模式,该项会缓存在 SESSION 中
-
get_model_icon
(
*args,
**kwargs
)
-
filter_hook
取得 Model 图标,Model 图标会作为 css class,一般生成 HTML 如下:
<i class="icon-model icon-{{model_icon}}"></i>
这是 Bootstrap 标准的图标格式,xadmin 目前是用了 Font Icon (Font-Awesome),您可以制作自己的图标,具体信息可以参考如何制作自己的字体图标
注解
Model 图标,目前被使用在以下几个地方,当然您也可以随时使用在自己实现的页面中:
- 系统菜单
- 列表页面标题中
- 添加、修改及删除页面的标题中
FAQ: 如果定义 Model 图标
您可以在 CommAdminView 的 OptionClass 中通过 CommAdminView.globe_models_icon 属性设定全局的 Model 图标。或者在 Model 的 OptionClass 中设置 model_icon 属性。
-
get_nav_menu
(
*args,
**kwargs
)
-
filter_hook
返回网站菜单,如果 get_site_menu() 返回的结果不是 None ,那么将把其返回结果作为菜单的第一部分,而后会补全没有出现的 Model 列表页菜单项,如果 get_site_menu() 返回为 None, 那么将自动根据 App 和 Model 生成两级的菜单。
返回类型: 格式见 get_site_menu() 返回格式
-
get_site_menu
(
)
-
FAQ:如何定制系统菜单
用于给子类复写的方法,开发者可以在子类或 OptionClass 中复写该方法,返回自己定义的网站菜单。菜单的格式为:
({ "title": "菜单标题", "perm": "权限标示", "icon": "图标的 css class", "url": "菜单url", "menus": [...] # 子菜单项 })
菜单项的 perm 和 url 如果是基于 Model 的,可以使用 xadmin 提供的便利方法 BaseAdminObject.get_model_perm() 和 :meth:`BaseAdminObject.get_model_url`。举例说明创建菜单:
class AdminSettings(object): def get_site_menu(self): return ( {'title': '内容管理', 'perm': self.get_model_perm(Article, 'change'), 'menus':( {'title': '游戏资料', 'icon': 'info-sign', 'url': self.get_model_url(Article, 'changelist') + '?_rel_categories__id__exact=2'}, {'title': '网站文章', 'icon': 'file', 'url': self.get_model_url(Article, 'changelist') + '?_rel_categories__id__exact=1'}, )}, {'title': '分类管理', 'perm': self.get_model_perm(Category, 'change'), 'menus':( {'title': '主要分类', 'url': self.get_model_url(Category, 'changelist') + '?_p_parent__isnull=True'}, {'title': '游戏资料', 'url': self.get_model_url(Category, 'changelist') + '?_rel_parent__id__exact=2'}, )}, ) site.register(CommAdminView, AdminSettings)
-
message_user
(
*args,
**kwargs
)
-
filter_hook
向用户显示一个消息,这个消息会在页面生成的时候生成以下 HTML:
{% for message in messages %} <div class="alert{% if message.tags %} alert-{{ message.tags }}{% endif %}"> <a class="close" data-dismiss="alert" href="#">×</a> {{ message }} </div> {% endfor %}
这是标准的 Bootstrap 格式。xadmin默认使用 django.contrib.messages 实现消息系统
参数: - message – 消息内容
- level – 消息等级,默认为 info
-
class
xadmin.views.
ModelAdminView
(
request,
*args,
**kwargs
)
-
基于 Model 的 AdminView,该类的子类,在 AdminSite 生成 urls 时,会为每一个注册的 Model 生成一个 url 映射。ModelAdminView 注册时使用 xadmin.sites.AdminSite.register_modelview() 方法注册,具体使用实例可以参见该方法的说明,或参考实例:
from xadmin.views import ModelAdminView class TestModelAdminView(ModelAdminView): def get(self, request, obj_id): pass site.register_modelview(r'^(.+)/test/$', TestModelAdminView, name='%s_%s_test')
注册后,用户可以通过访问 /%(app_label)s/%(module_name)s/123/test 访问到该view
Option 属性
-
fields
= None
-
(list,tuple) 默认显示的字段
-
exclude
= None
-
(list,tuple) 排除的字段,主要用在编辑页面
-
ordering
= None
-
(dict) 获取 Model 的 queryset 时默认的排序规则
-
model
= None
-
绑定的 Model 类,在注册 Model 时,该项会自动附在 OptionClass 中,见方法 AdminSite.register()
实例属性
-
opts
-
即 Model._meta
-
app_label
-
即 Model._meta.app_label
-
module_name
-
即 Model._meta.module_name
-
model_info
-
即 (self.app_label, self.module_name)
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params :
opts : Model 的 _meta
app_label : Model 的 app_label
module_name : Model 的 module_name
verbose_name : Model 的 verbose_name
-
get_model_perms
(
)
-
返回包含 Model 所有权限的 dict。dict 的 key 值为: add view change delete , value 为 boolean 值,表示当前用户是否具有相应的权限。
-
get_object
(
*args,
**kwargs
)
-
filter_hook
根据 object_id 获得唯一的 Model 实例,如果 pk 为 object_id 的 Model 不存在,则返回 None
-
get_ordering
(
)
-
返回 Model 列表的 ordering, 默认就是返回 ModelAdminView.ordering ,子类可以复写该方法
-
get_template_list
(
template_name
)
-
根据 template_name 返回一个 templates 列表,生成页面是在这些列表中寻找存在的模板。这样,您就能方便的复写某些模板。列表的格式为:
"xadmin/%s/%s/%s" % (opts.app_label, opts.object_name.lower(), template_name), "xadmin/%s/%s" % (opts.app_label, template_name), "xadmin/%s" % template_name,
-
has_add_permission
(
)
-
返回当前用户是否有添加权限
-
has_change_permission
(
obj=None
)
-
返回当前用户是否有修改权限
-
has_delete_permission
(
obj=None
)
-
返回当前用户是否有删除权限
-
has_view_permission
(
obj=None
)
-
返回当前用户是否有查看权限
注解
目前的实现为:如果一个用户有对数据的修改权限,那么他就有对数据的查看权限。当然您可以在子类中修改这一规则
-
model_admin_url
(
name,
*args,
**kwargs
)
-
等同于 BaseAdminObject.get_admin_url() ,只是无需填写 model 参数, 使用本身的 ModelAdminView.model 属性。
-
queryset
(
)
-
返回 Model 的 queryset。可以使用该属性查询 Model 数据。
-
-
class
xadmin.views.
ListAdminView
(
request,
*args,
**kwargs
)
-
显示数据列表的 AdminView, 该 View 实现了基本的数据排序和分页等功能.
Option 属性
-
list_display
= ('__str__',)
-
默认显示列
-
list_display_links
= ()
-
显示修改或查看数据详情连接的列
-
list_select_related
= False
-
是否提前加载关联数据, 使用 select_related
-
list_per_page
= 50
-
每页显示数据的条数
-
list_max_show_all
= 200
-
每页最大显示数据的条数
-
list_exclude
= ()
-
排除显示的列, 在显示列的设置中不会出现这些被排除的列
-
search_fields
= ()
-
按照这些列搜索数据
-
ordering
= None
-
默认的数据排序
-
object_list_template
= None
-
显示数据的模板
-
get
(
*args,
**kwargs
)
-
filter_hook
显示 Model 列表.
-
get_check_field_url
(
f
)
-
返回 显示列 菜单项中每一项的 url.
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params :
model_fields : 用于 选择显示列 功能, 保存所有可显示的列信息
result_headers : 显示列表的头部信息, 是 ResultHeader 列表
results : 显示列表的内容信息, 是 ResultItem 列表
-
get_list_display
(
*args,
**kwargs
)
-
filter_hook
获得列表显示的列. 如果 request 中有 _cols 参数, 则使用该参数, 否则使用 list_display.
注解
该方法会赋值 base_list_display 属性, 保存 list_display. 如果有插件修改了该方法的返回值(例如: Action 插件), 可能会增加其他列. 但是这些列可能对其他插件没有意义(例如: 导出数据插件). 那么其他插件可以使用base_list_display 这个属性, 取得最原始的显示列.
-
get_list_display_links
(
*args,
**kwargs
)
-
filter_hook
返回一组列, 这些列的数据会以链接形式显示, 连接地址可能是数据修改页面(如果有修改权限), 或是查看页面. 默认情况下会使用 list_display_links , 如果 list_display_links 为空, 则返回 list_display 第一列.
-
get_list_queryset
(
*args,
**kwargs
)
-
filter_hook
取得 Model 的 queryset, 该 queryset 已经进行排序和过滤过. 其他插件可以在这里修改 queryset
-
get_media
(
*args,
**kwargs
)
-
filter_hook
返回列表页面的 Media, 该页面添加了 xadmin.page.list.js 文件
-
get_model_method_fields
(
)
-
将所有 OptionClass 中含有 is_column=True 的方法, 使用 FakeMethodField 包装成一个假的 DB Field. 用于在选择显示列的功能中显示.
-
get_ordering
(
*args,
**kwargs
)
-
filter_hook
Returns the list of ordering fields for the change list.First we check the get_ordering() method in model admin, then we checkthe object’s default ordering. Then, any manually-specified orderingfrom the query string overrides anything. Finally, a deterministicorder is guaranteed by ensuring the primary key is used as the lastordering field.
-
get_ordering_field
(
*args,
**kwargs
)
-
filter_hook
根据参数 field_name 获取需要排序 Field 的名字. field_name 可能是 Model 的一个标准 DB Field, 也有可能是可执行方法, 或是 OptionClass 及 Model 的一个属性, 这种情况下会取其 admin_order_field 属性作为排序字段, 如果取不到, 则返回 None. 例如:
class UserAdmin(object): def my_field(self, obj): return obj.name.lower() my_field.admin_order_field = 'name'
-
get_ordering_field_columns
(
*args,
**kwargs
)
-
filter_hook
Returns a SortedDict of ordering field column numbers and asc/desc
-
get_page_number
(
*args,
**kwargs
)
-
filter_hook
返回翻页组件各页码显示的 HTML 内容. 默认使用 bootstrap 样式
参数: i – 页码, 可能是 DOT
-
get_paginator
(
*args,
**kwargs
)
-
filter_hook
返回 paginator 实例, 使用 paginator_class 类实例化
-
get_response
(
*args,
**kwargs
)
-
filter_hook
在 get_context() 之后执行. 该方法默认无返回内容, 插件可以复写该方法, 返回指定的 HttpResponse.
-
get_result_list
(
*args,
**kwargs
)
-
filter_hook
-
init_request
(
*args,
**kwargs
)
-
初始化请求, 首先判断当前用户有无 view 权限, 而后进行一些生成数据列表所需的变量的初始化操作.
-
make_result_list
(
)
-
该方法负责生成数据列表及分页信息. 数据列表会赋值给属性 result_list , 插件可以在该方法后执行一些数据处理.
-
post
(
*args,
**kwargs
)
-
filter_hook
显示 Model 列表的 POST 请求, 默认跟 GET 请求返回同样的结果, 插件可以通过复写 post_response() 方法改变 POST 请求的返回
-
post_response
(
*args,
**kwargs
)
-
filter_hook
列表的 POST 请求, 该方法默认无返回内容, 插件可以复写该方法, 返回指定的 HttpResponse.
-
post_result_list
(
*args,
**kwargs
)
-
filter_hook
-
result_header
(
*args,
**kwargs
)
-
filter_hook
返回某一列的头信息, 一个 ResultHeader 实例.
参数: - field_name – 列的名字
- row – ResultHeader 实例
-
result_headers
(
*args,
**kwargs
)
-
filter_hook
返回列表的列头信息. 返回一个 ResultRow 实例, 其 cells 属性包含列信息
-
result_item
(
*args,
**kwargs
)
-
filter_hook
返回某一对象某一列的数据, ResultItem 实例.
参数: - obj – Model 对象
- field_name – 列的名字
- row – ResultHeader 实例
-
result_row
(
*args,
**kwargs
)
-
filter_hook
返回列表某一行的内容信息. 返回一个 ResultRow 实例, 其 cells 属性包含各列内容信息
参数: obj – Model 对象
-
results
(
*args,
**kwargs
)
-
filter_hook
返回整个列表内容信息. 返回一个 ResultRow 的数据, 包含各行信息
-
url_for_result
(
*args,
**kwargs
)
-
filter_hook
返回列表内容连接. 如果当前用户有修改权限就返回修改页面的连接, 否则返回查看详情页面连接
参数: result – Model 对象
-
-
class
xadmin.views.
ModelFormAdminView
(
request,
*args,
**kwargs
)
-
用于添加或修改数据的 AdminView,该类是一个基类,提供了数据表单显示及修改等通用功能,被 CreateAdminView 及 UpdateAdminView 继承
Option 属性
-
form
= <class 'django.forms.models.ModelForm'>
-
使用 Model 生成 Form 的基本 Form 类,默认为 django.forms.ModelForm
-
formfield_overrides
= {}
-
可以指定某种类型的 DB Field,使用指定的 Form Field 属性,例如:
class AtricleAdmin(object): formfield_overrides = { models.FileField:{'widget': mywidgets.XFileWidget}, }
这样,显示所有 FileField 字段时,都会使用 mywidgets.XFileWidget 来显示
-
readonly_fields
= ()
-
只读的字段,这些字段不能被编辑
-
style_fields
= {}
-
指定 Field 的 Style, Style一般用来实现同一种类型的字段的不同效果,例如同样是 radio button,有普通及``inline``两种 Style。通常 xadmin 针对表单的插件会实现更多的 Field Style。您使用这些插件后,只要方便的将想要使用插件效果的字段设置成插件实现的 Style 即可,例如:
class AtricleAdmin(object): style_fields = {"content": "rich-textarea"}
rich-textarea 可能是某插件提供的 Style,这样显示 content 字段时就会使用该插件的效果了
-
relfield_style
= None
-
当 Model 是其他 Model 的 ref model 时,其他 Model 在显示本 Model 的字段时使用的 Field Style
-
save_as
= False
-
是否显示 另存为 按钮
-
save_on_top
= False
-
是否在页面上面显示按钮组
-
add_form_template
= None
-
添加页面的模板
-
change_form_template
= None
-
修改页面的模板
-
form_layout
= None
-
页面 Form 的 Layout 对象,是一个标准的 Crispy Form Layout 对象。使用 Layout 可以方便的定义整个 Form 页面的结构。有关 Crispy Form 可以参考其文档 Crispy Form 文档设置 form_layout 的示例:
from xadmin.layout import Main, Side, Fieldset, Row, AppendedText class AtricleAdmin(object): form_layout = ( Main( Fieldset('Comm data', 'title', 'category' ), Inline(Log), Fieldset('Details', 'short_title', Row(AppendedText('file_size', 'MB'), 'author'), 'content' ), ), Side( Fieldset('Status', 'status', ), ) )
有关 Layout 中元素的信息,可以参看文档 form_layout
-
formfield_for_dbfield
(
*args,
**kwargs
)
-
filter_hook
生成表单时的回调方法,返回 Form Field。
参数: db_field – Model 的 DB Field
-
get
(
*args,
**kwargs
)
-
filter_hook
显示表单。具体的程序执行流程为:
-
2.1 get_form_datas()
-
get_response()
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params:
form : Form 对象
original : 要修改的原始数据对象
show_delete : 是否显示删除项
add : 是否是添加数据
change : 是否是修改数据
errors : Form 错误信息
-
get_error_list
(
*args,
**kwargs
)
-
filter_hook
获取表单的错误信息列表。
-
get_field_attrs
(
*args,
**kwargs
)
-
filter_hook
根据 DB Field 返回 Form Field 的属性,dict类型。
参数: db_field – Model 的 DB Field
-
get_field_style
(
*args,
**kwargs
)
-
filter_hook
根据 Field Style 返回 Form Field 属性。扩展插件可以过滤该方法,提供各种不同的 Style
参数: - db_field – Model 的 DB Field
- style – 配置的 Field Style,该值来自于属性 style_fields
-
get_form_helper
(
*args,
**kwargs
)
-
filter_hook
取得 Crispy Form 需要的 FormHelper。具体信息可以参看 Crispy Form 文档
-
get_form_layout
(
*args,
**kwargs
)
-
filter_hook
返回 Form Layout ,如果您设置了 form_layout 属性,则使用该属性,否则该方法会自动生成 Form Layout 。有关 Form Layout 的更多信息可以参看 Crispy Form 文档设置 Form Layout 可以非常灵活的显示表单页面的各个元素
-
get_media
(
*args,
**kwargs
)
-
filter_hook
-
get_model_form
(
*args,
**kwargs
)
-
filter_hook
根据 Model 返回 Form 类,用来显示表单。
-
get_readonly_fields
(
*args,
**kwargs
)
-
filter_hook
返回只读字段,子类或 OptionClass 可以复写该方法
-
instance_forms
(
*args,
**kwargs
)
-
filter_hook
实例化 Form 对象,即使用 get_form_datas() 返回的值初始化 Form,实例化的 Form 对象赋值为 form_obj 属性
-
post
(
*args,
**kwargs
)
-
filter_hook
保存表单数据。具体的程序执行流程为:
-
2.1 get_form_datas()
-
-
prepare_form
(
*args,
**kwargs
)
-
filter_hook
准备 Form,即调用 get_model_form() 获取 form ,然后赋值给 model_form 属性
-
save_forms
(
*args,
**kwargs
)
-
filter_hook
保存表单,赋值为 new_obj 属性,这时该对象还没有保存到数据库中,也没有 pk 生成
-
save_models
(
*args,
**kwargs
)
-
filter_hook
保存数据到数据库中
-
save_related
(
*args,
**kwargs
)
-
filter_hook
保存关联数据
-
setup_forms
(
)
-
配置 Form。主要是
-
valid_forms
(
*args,
**kwargs
)
-
filter_hook
验证 Form 的数据合法性
-
-
class
xadmin.views.
CreateAdminView
(
request,
*args,
**kwargs
)
-
创建数据的 ModeAdminView 继承自 ModelFormAdminView ,用于创建数据。
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params:
title : 表单标题
-
get_form_datas
(
*args,
**kwargs
)
-
filter_hook
从 Request 中返回 Form 的初始化数据
-
get_response
(
*args,
**kwargs
)
-
filter_hook
返回显示表单页面的 Response ,子类或是 OptionClass 可以复写该方法
-
post_response
(
*args,
**kwargs
)
-
filter_hook
当成功保存数据后,会调用该方法返回 HttpResponse 或跳转地址
-
-
class
xadmin.views.
UpdateAdminView
(
request,
*args,
**kwargs
)
-
修改数据的 ModeAdminView 继承自 ModelFormAdminView ,用于修改数据。
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params:
title : 表单标题
object_id : 修改的数据对象的 id
-
get_form_datas
(
*args,
**kwargs
)
-
filter_hook
获取 Form 数据
-
get_response
(
*args,
**kwargs
)
-
filter_hook
-
post_response
(
*args,
**kwargs
)
-
filter_hook
当成功修改数据后,会调用该方法返回 HttpResponse 或跳转地址
-
-
class
xadmin.views.
DeleteAdminView
(
request,
*args,
**kwargs
)
-
删除 Model 的 AdminView。主要用于删除数据
Option属性
-
delete_confirmation_template
= None
-
删除时确认删除页面的模板名称
实例属性
-
obj
-
即将被删除的对象
-
delete_model
(
*args,
**kwargs
)
-
filter_hook
删除 self.obj
-
get
(
*args,
**kwargs
)
-
filter_hook
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params:
title : 确认删除的标题,如果您没有权限删除的话,会提示无法删除
object : 要被删除的对象
deleted_objects : 关联被删除的所有数据对象
perms_lacking : 缺少的权限
protected : 被保护的数据,无法被删除的数据对象
-
init_request
(
object_id,
*args,
**kwargs
)
-
初始化操作。根据传入的 object_id 取得要被删除的数据对象,而后进行权限判断
-
post
(
*args,
**kwargs
)
-
filter_hook
-
post_response
(
*args,
**kwargs
)
-
filter_hook
删除成功后的操作。首先提示用户信息,而后根据用户权限做跳转,如果用户有列表产看权限就跳转到列表页面,否则跳到网站首页。
-
-
class
xadmin.views.
DetailAdminView
(
request,
*args,
**kwargs
)
-
显示 Model 详细信息的 AdminView. 该 View 页面只能用来查看数据内容, 不能用来修改数据.该 View 显示各字段的布局跟 xadmin.views.edit.ModelFormAdminView 一致.
Option属性
-
detail_layout
= None
-
详情页面的 Layout 对象,是一个标准的 Crispy Form Layout 对象。使用 Layout 可以方便的定义整个页面的结构。
-
detail_show_all
= True
-
是否显示所有字段的内容, 默认为 True . 如果为 True 则会显示 Layout 中没有列出的字段, 否则会隐藏这些字段
-
detail_template
= None
-
详情页面的模板文件
实例属性
-
obj
-
即将被删除的对象
-
get
(
*args,
**kwargs
)
-
filter_hook
-
get_context
(
*args,
**kwargs
)
-
filter_hook
Context Params :
form : 用于显示数据的 Form 对象
object : 要显示的 Model 对象
-
get_field_result
(
*args,
**kwargs
)
-
filter_hook
返回包含该字段内容的 ResultField 实例.
-
get_form_helper
(
*args,
**kwargs
)
-
filter_hook
取得 Crispy Form 需要的 FormHelper。具体信息可以参看 Crispy Form 文档
-
get_form_layout
(
*args,
**kwargs
)
-
filter_hook
返回 Form Layout ,如果您设置了 detail_layout 属性,则使用 form_layout 属性,如果都没有该方法会自动生成 Form Layout 。有关 Form Layout 的更多信息可以参看 Crispy Form 文档设置 Form Layout 可以非常灵活的显示页面的各个元素
-
get_media
(
*args,
**kwargs
)
-
filter_hook
返回列表页面的 Media, 该页面添加了 form.css 文件
-
get_model_form
(
*args,
**kwargs
)
-
filter_hook
根据 Model 返回 Form 类,用来显示表单。
-
get_response
(
*args,
**kwargs
)
-
filter_hook
返回 HttpResponse , 插件可以复写该方法返回特定的 HttpResponse
-
init_request
(
object_id,
*args,
**kwargs
)
-
初始化操作。根据传入的 object_id 取得要被显示的数据对象,而后进行权限判断, 如果没有数据查看权限会显示禁止页面.
-
-
-