修改Flask Admin中的列表模板
我正在使用Flask和Flask-Admin这个扩展。我有两个模型(使用SQLAlchemy):
- 项目(Project)
- 任务(Task)
项目有一个属性:
tasks = db.relationship('Task', backref=db.backref('project'))
而任务是一个自引用的树形结构,任务模型中的关键列是:
children = db.relationship("Task",
# cascade deletions
cascade="all, delete-orphan",
# many to one + adjacency list - remote_side
# is required to reference the 'remote'
# column in the join condition.
backref=db.backref("parent", remote_side=id),
# children will be represented as a dictionary
# on the "title" attribute.
collection_class=attribute_mapped_collection('title'),
)
我想在Flask-Admin中创建一个列表模板,显示所有的项目。这可以通过这个扩展和标准的列表视图轻松实现。但现在我想为每个项目添加一个CRUD界面(例如:http://examples.flask-admin.org/sqla/simple/admin/userview/),这个界面应该在点击某个项目时显示出该项目的任务。
我不知道实现这个目标的最佳方法是什么。我考虑过在每个项目行的表格单元格中包含一个iframe来显示任务,但这样看起来有点别扭。我该如何在项目列表模板中渲染与项目相关的任务的CRUD界面呢?
我知道Flask-Admin能够通过模型中的外键将这两个表连接起来,但标准的方法并不是我想要的,因为从项目的CRUD界面到任务的CRUD界面至少需要点击一次。我希望在同一页面上加载这两个CRUD界面。
1 个回答
2
根据文档来看,这个操作其实很简单,只需要给你的 Project
模型视图添加一个叫做 inline-models
的类属性就可以了:
class ProjectModelView(ModelView):
inline_models = (Task, )