flask_admin 笔记三 客户化视图

Posted 北冥大帝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask_admin 笔记三 客户化视图相关的知识,希望对你有一定的参考价值。

客户化视图
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 = 50 # 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 = 50 # 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: 10,
style: color: black
}
}

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

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

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

以上是关于flask_admin 笔记三 客户化视图的主要内容,如果未能解决你的问题,请参考以下文章

flask_admin 笔记二 授权和权限

Android - 试图实例化一个不是片段的类

启用 Proguard 后无法实例化片段

flask_admin model官方文档学习

Flask-admin 使用总结

Android:在片段内膨胀自定义视图