客戶化視圖
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
