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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM