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

使用flask_admin.contrib.sqla实现数据表的搜索功能

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

Flask-Admin 是一个基于 Flask 和 Flask-SQLAlchemy 的库,用于快速创建管理界面。它可以帮助你方便地管理和操作数据库中的数据表。其中,flask_admin.contrib.sqla 模块扩展了 Flask-Admin,提供了与 SQLAlchemy 一起使用的功能。

在 Flask-Admin 中,可以通过添加 BaseModelViewModelView 类来实现对数据表的增删改查等操作。对于搜索功能,ModelView 类提供了 column_searchable_list 属性,我们可以在这里定义需要进行搜索的列。

下面是一个简单的示例,演示了如何使用 Flask-Admin 和 flask_admin.contrib.sqla 模块实现数据表的搜索功能:

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

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


# 定义一个数据模型
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(50))

    def __repr__(self):
        return f"<User {self.name}>"

# 创建管理员对象
admin = Admin(app, name="MyAdmin", template_mode="bootstrap3")


# 创建 User 视图
class UserView(ModelView):
    column_searchable_list = ['name', 'email']  # 指定需要搜索的列

# 注册 User 数据模型和视图
admin.add_view(UserView(User, db.session))

@app.route('/')
def index():
    return "Hello Flask-Admin!"

if __name__ == "__main__":
    app.run()

在上面的例子中,我们首先创建了一个 User 数据模型,包含了三个字段:idnameemail。然后创建了一个 UserView 类,继承了 ModelView,并设置了 column_searchable_list 属性,指定了需要进行搜索的列。

接下来,注册数据库和视图到 Flask-Admin 中,通过 admin.add_view(UserView(User, db.session)) 添加了 UserView 视图和 User 数据模型。

最后,创建一个简单的 Flask 应用,运行在 http://localhost:5000/ 上,并在应用中注册了 Flask-Admin。

现在,你可以通过访问 http://localhost:5000/admin 来查看和搜索 User 数据表了。在搜索框中输入关键字,可以根据姓名或邮箱字段进行搜索。

以上就是使用 Flask-Admin 和 flask_admin.contrib.sqla 实现数据表搜索功能的简单示例。你可以根据自己的需求修改示例中的代码,以适应你的应用场景。