flask_admin 笔记三 客户化视图

时间:2023-12-18 18:26:44

客户化视图
1, model数据模型参数配置
1)配置全局参数
内置的ModelView类很适合快速入门。 但是,您需要配置其功能以适合您的特定型号。 这是通过设置ModelView类中提供的配置属性的值来完成的。

需要指定一些全局配置参数,首先是实现ModelView的子类并配置全局参数,然后在admin中添加所有的model数据模型:

from flask_admin.contrib.sqla import ModelView

# Flask and Flask-SQLAlchemy initialization here

class MicroBlogModelView(ModelView):
can_delete = False # disable model deletion
page_size = # the number of entries to display on the list view admin.add_view(MicroBlogModelView(User, db.session))
admin.add_view(MicroBlogModelView(Post, db.session))

2)当然,你也可以为单一model数据模型指定参数:

class UserView(ModelView): ##这就是所谓的modelview了
can_delete = False # disable model deletion class PostView(ModelView):
page_size = # the number of entries to display on the list view admin.add_view(UserView(User, db.session))
admin.add_view(PostView(Post, db.session))

2,ModelView 配置属性
有关已定义属性的完整列表,请查看BaseModelView()的API文档。 以下是一些最常用的属性:
1) 设置CURD的选项

can_create = False
can_edit = False
can_delete = False

2) 对于一些只读列表的信息,你可以增加read-only的属性

can_view_details = True

3) 从列表视图中删除列很容易,只需传递column_excludes_list参数的列名称列表:

column_exclude_list = ['password', ]

4) 要使列可搜索,或使用它们进行过滤,请指定列名称的列表:

column_searchable_list = ['name', 'email']
column_filters = ['country']

5) 要获得更快的编辑体验,请在列表视图中启用内嵌编辑:

column_editable_list = ['name', 'last_name']

6) 或者,添加和编辑表单显示在列表页面上的模态窗口中,而不是专用的创建和编辑页面:

create_modal = True
edit_modal = True

7) 您可以通过指定选择列表来限制文本字段的可能值:

form_choices = {
'title': [
('MR', 'Mr'),
('MRS', 'Mrs'),
('MS', 'Ms'),
('DR', 'Dr'),
('PROF', 'Prof.')
]
}

8) 从创建和编辑表单中删除字段:

form_excluded_columns = ['last_name', 'email']

9) 指定WTForms 文本域的参数设置

form_args = {
'name': {
'label': 'First Name',
'validators': [required()]
}
}

10)或者,指定用于呈现这些字段的WTForms小部件的参数:

form_widget_args = {
'description': {
'rows': ,
'style': 'color: black'
}
}

11)当你的表单包含外键时,通过ajax加载这些相关的模型,使用:

form_ajax_refs = {
'user': {
'fields': ['first_name', 'last_name', 'email'],
'page_size':
}
}

12)要过滤通过ajax加载的结果,可以使用:

form_ajax_refs = {
'active_user': QueryAjaxModelLoader('user', db.session, User,
filters=["is_active=True", "id>1000"])
}

13)在线管理相关模型:

inline_models = ['post', ]

具体的inline_models可以查看http://flask-admin.readthedocs.io/en/latest/api/mod_contrib_sqla/#flask_admin.contrib.sqla.ModelView.inline_models
14)实现csv导出功能参数:

can_export = True

这里会增加一个按钮,用于导出记录,最大的导出数可以参考export_max_rows
http://flask-admin.readthedocs.io/en/latest/api/mod_model/#flask_admin.model.BaseModelView.export_max_rows