在详细信息视图中包括表列表视图

时间:2018-09-22 12:27:20

标签: python flask-admin

使用flask_sqlalchemy,我有两个表(A&B)通过关联代理表(C)连接在一起,其中有一些其他字段。

就目前而言,我使用flask_admin在C上有一个ModelView,并且在此列表视图中,我已在A表相关列的每个项目上附加了一个链接(使用column_formatters选项)到details_view页。

工作正常,但我不知道在此详细信息视图页面中,如何基于C附加仅与所选A项目相关的行的filtered表。

1 个答案:

答案 0 :(得分:0)

好吧,如果有人需要,我在这里回答自己。

我通过创建另一个list_view来执行相反的操作,但是对于我想要的选定记录,通过修改index_view方法并将多余的参数(细节)传递给模板来实现:

class TableCView(admin.ModelView):
    list_template = 'modified_listview.html'

    @expose('/')
    def index_view(self):
        self.a_id = request.args.get('id', None)
        self._template_args['a_id'] = self.a_id  # add more params here
        return super(TableCView, self).index_view()

    def get_query(self):
        # Filter records by a_id
        query = super(TableCView, self).get_query()
        if self.a_id:
            query = query.filter(self.model.a_id == self.a_id)
        return query

    def get_count_query(self):
        query = super(TableCView, self).get_count_query()
        if self.a_id:
            query = query.filter(self.model.a_id == self.a_id)
        return query