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

利用flask_admin.contrib.sqla实现数据表的筛选功能

发布时间:2023-12-27 13:30:39

使用flask_admin.contrib.sqla可以很方便地实现数据表的筛选功能。它基于Flask-Admin插件,可以让我们轻松地使用SQLAlchemy进行数据库操作。

首先,我们需要在项目中安装Flask-Admin和SQLAlchemy插件。可以通过pip来安装它们:

pip install flask-admin
pip install flask-sqlalchemy

接下来,我们需要创建一个Flask应用,并初始化SQLAlchemy:

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)
    username = db.Column(db.String(80), unique=True)

    def __repr__(self):
        return '<User %r>' % self.username

# 创建数据库表
db.create_all()

然后,我们需要创建一个管理后台的视图,使用flask_admin.contrib.sqla的ModelView类来管理数据表。在这个视图中,我们可以设置筛选器字段,以便用户可以通过这些字段来筛选数据。

from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

admin = Admin(app, name='后台管理系统', template_mode='bootstrap3')

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

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

在以上代码中,我们创建了一个UserView类,继承自ModelView类,并传入User模型和数据库会话实例。然后,我们设置了column_list属性,用于显示在列表中的字段;column_searchable_list属性,用于在列表上方添加搜索框;column_filters属性,用于添加筛选器字段。

最后,我们将UserView类添加到管理后台中。

if __name__ == '__main__':
    app.run(debug=True)

现在,我们可以运行我们的应用,并在浏览器中访问http://localhost:5000/admin来查看管理后台。

在管理后台中,我们可以看到User数据表的列表视图。在列表上方有一个搜索框,我们可以通过输入用户名关键字来筛选数据。另外,还有一个筛选器字段,我们可以点击它并选择其中的值来筛选数据。

总结起来,利用flask_admin.contrib.sqla实现数据表的筛选功能非常简单。只需创建一个继承自ModelView类的视图,并设置筛选器字段即可。通过这个插件,我们可以快速地实现一个功能强大的管理后台。