嵌入式平板视图
Flask-Admin-Subview的Python项目详细描述
烧瓶管理子视图
将烧瓶管理列表视图嵌入到任意页面:
限制
- 不支持内联编辑
- 仅限bootstrap3模板
安装
pip install flask-admin-subview
集成
集成的最简单方法是对模型的详细信息视图使用帮助程序。下面的示例演示 集成子视图以在详细信息页中显示sqlalchemy模型的关系。
db架构
classContentModel(db.Model):__table__="content"id=db.Column(db.Integer,primary_key=True)container_id=db.Column(db.Integer,db.ForeignKey("container.id"),nullable=False)classContainerModel(db.Model):__table__="container"id=db.Column(db.Integer,primary_key=True)content=db.relationship(ContentModel)
准备子视图
将模型的子视图分类为一个好主意:
importflask_admin_subviewclassContentModelSubview(flask_admin_subview.View,ContentModelView):pass
或者您可以为子视图创建一个全新的视图:
fromflask_admin.contrib.sqlaimportModelViewimportflask_admin_subviewclassContentModelSubview(flask_admin_subview.View,ModelView):pass
添加查询筛选器以仅显示特定容器的内容,容器ID将作为URL参数传递:
classContentModelSubview(...):defget_query(self):returnself._extend_query(super(ContentModelSubview,self).get_query())defget_count_query(self):returnself._extend_query(super(ContentModelSubview,self).get_count_query())def_extend_query(self,query):container_id=request.args.get('id')ifcontainer_idisNone:abort(400,"Container id required")returnquery.filter(ContentModel.container_id==container_id)
初始化扩展名
fromflask_admin_subviewimportSubviewapp=Flask(__name__)admin=Admin(app,template_mode="bootstrap3")# only supports bootstrap3 modeSubview(app,template_mode="bootstrap3")
将子视图添加为蓝图
app=Flask(__name__)# ...app.register_blueprint(ContentModelSubview(Content,db.session,"Content",endpoint="content_subview").create_blueprint(admin))
准备容器视图
使用helper在模型的详细信息中显示子视图:
fromflask_admin_subviewimportSubviewContainerMixin,SubviewEntryclassContainerView(SubviewContainerMixin,ModelView):can_view_details=Truesubviews=(# specify that we need to pass id from the location URL to the subviewSubviewEntry("/admin/content_subview/","Content Subview","id"),)
待办事项
- 添加测试
- 添加示例应用程序代码注释
- 添加bootstrap2模板
- 可能,支持内联编辑
- 描述高级用法