【发布时间】:2022-01-02 18:01:30
【问题描述】:
我想知道如何在访问页面时默认应用过滤器。
我希望能够禁用此过滤器。
下面的一些示例代码:
from flask import Flask
from flask_admin import Admin
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db = SQLAlchemy()
db.init_app(app)
from . import models
from . import views
db.create_all()
admin = Admin(app,
name='Interface',
base_template='my_master.html',
template_mode='bootstrap3',
url='/')
admin.add_view(views.MyView(models.User, db.session, endpoint='users', url='/users'))
# models
from . import db
class User(db.Model):
__tablename__ = 'USER'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String())
label = db.Column(db.String()) # 2 possible values: True abd False
def __str__(self):
return "{}".format(self.name)
# views
from flask_admin.contrib.sqla import ModelView
from flask_admin.contrib.sqla.filters import BaseSQLAFilter
class FilterLabels(BaseSQLAFilter):
def apply(self, query, value, alias=None):
if value =='0':
return query.filter(self.column == 'True')
if value =='1':
return query.filter(self.column == 'False')
def operation(self):
return u'equals'
def get_options(self, view):
return [(0, 'True'), (1, 'False')]
class MyView(ModelView):
column_list = ('id', 'name', 'label')
column_searchable_list = column_list
column_filters = ['id', 'name', FilterLabels]
def get_url(self, endpoint, **kwargs):
return url_for(endpoint, **kwargs) # Should I add something here?
def is_accessible(self):
return True
'''
当我访问页面时,我希望应用过滤器 (FilterLabels)。 我希望轻松禁用此过滤器
你能帮帮我吗?
【问题讨论】:
-
column_default_sort 是一个好的开始,但我不知道如何通过 UI 禁用它
-
“当我第一次访问该页面时” - 您认为什么是“第一次”?
-
当您使用 Get 方法访问 url 时,例如输入“www.google.com”进行搜索时
标签: flask sqlalchemy flask-admin