Flask Flask-Admin中的模型视图能够链接到其他模型视图吗

Flask Flask-Admin中的模型视图能够链接到其他模型视图吗

在本文中,我们将介绍如何在Flask-Admin中的模型视图之间创建超链接。Flask-Admin是一个方便快捷的管理员界面扩展,可以轻松地生成CRUD(创建、读取、更新、删除)操作和管理数据模型。

阅读更多:Flask 教程

Flask-Admin简介

Flask-Admin是一个基于Flask的插件,提供了一个可自定义的管理界面,可以用于管理数据模型。它允许快速创建CRUD视图,并提供了丰富的功能,如搜索、过滤和排序功能。

超链接到其他模型视图

在Flask-Admin中,我们可以使用超链接来链接到其他模型视图。这对于在不同的模型视图之间导航非常有用。下面我们将讨论如何将模型视图链接到其他模型视图。

使用column_editable_list属性

首先,我们可以使用column_editable_list属性创建一个可以编辑的列表,然后在列表中创建超链接。

from flask_admin.contrib.sqla import ModelView
from flask_admin.model import typefmt

class UserView(ModelView):
    column_editable_list = ('name', 'email')
    column_formatters = {'name': typefmt.HTML}

    def __init__(self, session):
        super(UserView, self).__init__(User, session)

        def format_name(view, context, model, name):
            return '<a href="/admin/role/%s">%s</a>' % (model.role_id, model.name)

        typefmt.HTMLFormatter.add_format(typefmt.HTML, format_name)

admin.add_view(UserView(db.session))
Python

在上面的代码中,我们创建了一个名为UserView的模型视图。通过将column_editable_list属性设置为可以编辑的列,我们可以在列表视图中创建超链接。我们还使用column_formatters属性和typefmt.HTML来自定义name列的格式化显示。在format_name函数中,我们创建了一个超链接,链接到role_id所对应的角色模型视图。

这样,在用户模型视图中,我们就可以在name列中看到一个链接,点击该链接将跳转到对应的角色模型视图。

使用column_type属性

另一种方法是使用column_type属性创建一个可以点击的列,然后在该列中添加超链接。

from flask_admin.contrib.sqla import ModelView
from flask_admin.helpers import get_url

class UserView(ModelView):
    column_type_formatters = {models.Role: lambda v, c, m, p: get_url('.role_view', id=m.role_id).lstrip('/')}

    def __init__(self, session):
        super(UserView, self).__init__(User, session)

admin.add_view(UserView(db.session))
Python

在上面的代码中,我们创建了一个名为UserView的模型视图,并使用column_type_formatters属性来指定角色模型视图。我们通过get_url函数来获取角色视图的URL,并将其添加到column_type_formatters属性中。这样,我们就可以在用户模型视图中看到一个可点击的列,点击该列将跳转到对应的角色模型视图。

使用column_formatters属性

我们还可以使用column_formatters属性来自定义列的显示格式,其中包括添加链接。

from flask_admin.contrib.sqla import ModelView

class UserView(ModelView):
    column_formatters = {
        'name': lambda v, c, m, p: '<a href="/admin/role?id=%s">%s</a>' % (m.role_id, m.name)
    }

    def __init__(self, session):
        super(UserView, self).__init__(User, session)

admin.add_view(UserView(db.session))
Python

在上述代码中,我们创建了一个名为UserView的模型视图,并在column_formatters属性中使用lambda函数来创建一个带有链接的name列。我们通过在lambda函数中使用m.role_idm.name来为每个模型对象创建超链接。当我们在用户模型视图中查看数据时,name列将显示为链接,点击该链接将跳转到对应的角色模型视图。

总结

在本文中,我们介绍了如何在Flask-Admin中的模型视图之间创建超链接。我们讨论了使用column_editable_list属性、column_type属性和column_formatters属性来创建超链接的不同方法。

通过使用这些方法,我们可以在模型视图中轻松地导航到其他模型视图。这为我们在管理界面中管理数据模型提供了更大的灵活性和便利性。无论是根据编辑列表或是点击列,我们都可以自由地链接到其他模型视图,使得系统的管理更加方便快捷。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册