可以在Flask-Admin超链接中将视图建模到其他模型视图吗?

wod*_*dow 22 python flask

假设我们有一个模型,Foo,它引用了另一个模型,User - 和Flask-Admin视图.

在Foo管理员视图页面上(例如http://mrjoes.github.io/2012/08/27/flask-admin-102.html上的第一个屏幕截图),我希望用户列中的条目为链接到相应的用户模型视图.

我是否需要修改Flask-Admin的模板之一才能实现此目的?

(这可以在Django管理界面中通过简单地输出给定字段的HTML并设置allow_tags (ref) True来绕过Django的HTML标记过滤器)

wod*_*dow 35

一些基于Joes答案的示例代码:

class MyFooView(ModelView):

    def _user_formatter(view, context, model, name):
        return Markup(
            u"<a href='%s'>%s</a>" % (
                url_for('user.edit_view', id=model.user.id),
                model.user
            )
        ) if model.user else u""

    column_formatters = {
        'user': _user_formatter
    }
Run Code Online (Sandbox Code Playgroud)


Joe*_*oes 24

使用column_formatters此:https://flask-admin.readthedocs.org/en/latest/api/mod_model/#flask.ext.admin.model.BaseModelView.column_formatters

想法非常简单:对于要显示为超链接的字段,要么生成HTML字符串并使用Jinja2 Markup类包装它(因此它不会在模板中转义)或使用macro帮助程序:https://github.com/ mrjoes /烧瓶管理员/斑点/主/ flask_admin /模型/ template.py

宏助手允许您在覆盖模板中使用自定义Jinja2宏,这将表示逻辑移动到模板.

就URL而言,您只需要找到为User模型生成(或提供)的端点名称,并url_for('userview.edit_view', id=model.id)生成链接.