欢迎访问宙启技术站
智能推送

使用flask_admin.contrib.sqla定制数据表的显示方式

发布时间:2023-12-27 13:27:32

Flask-Admin 是 Flask 框架的一个扩展,它提供了一个自动生成的管理界面,可以用来管理数据库中的表格。其中的 flask_admin.contrib.sqla 是一个专门用于 SQLAlchemy 的插件,它简化了与数据库模型的交互。

在使用 flask_admin.contrib.sqla 定制数据表的显示方式前,首先需要安装 Flask-Admin 和 SQLAlchemy 扩展:

pip install Flask-Admin
pip install SQLAlchemy

下面我们通过一个例子来介绍如何使用 flask_admin.contrib.sqla 定制数据表的显示方式。

首先创建一个 Flask 应用:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)
admin = Admin(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)

db.create_all()

在上面的代码中,我们创建了一个简单的 User 模型,并将其映射到 SQLite 数据库中的 test.db。

接下来,我们使用 flask_admin.contrib.sqla 插件来定制 User 模型的显示方式:

admin.add_view(ModelView(User, db.session))

上面的代码中,我们通过调用 admin.add_view() 方法来创建一个视图,其中 个参数为 User 模型,第二个参数为 SQLAlchemy 的会话对象。这样,Flask-Admin 就会自动生成一个管理界面,用于管理 User 模型对应的表格。

如果希望定制 User 模型在管理界面中的显示方式,可以定义一个继承自 ModelView 的子类,并重写其中的方法。例如,我们可以定制 User 模型在管理界面中显示的列和搜索字段:

class UserView(ModelView):
    column_list = ('id', 'username')
    column_searchable_list = ('username',)

admin.add_view(UserView(User, db.session))

在上面的代码中,我们定义了一个 UserView 类,通过设置 column_list 属性,指定 User 模型在管理界面中的显示列;通过设置 column_searchable_list 属性,指定 User 模型在管理界面中可搜索的字段。最后,将 UserView 类传递给 admin.add_view() 方法,这样就可以实现定制化的显示方式。

通过上面的例子,我们可以看到,使用 flask_admin.contrib.sqla 可以方便地定制数据表的显示方式。你可以根据实际需要,自定义模型的显示列、搜索字段、过滤字段等,以满足具体的管理需求。同时,Flask-Admin 还提供了许多其他的定制选项,可以参考官方文档以获取更多信息。