Flask-Admin:在主键上添加过滤器

时间:2018-07-02 21:27:33

标签: flask-sqlalchemy python-3.6 flask-admin

我正在尝试在主键上添加过滤器,但无法正常工作。我遍历了源代码,发现它已被排除在外: flask-admin/flask_admin/contrib/sqla/view.py

def scaffold_filters(self, name):
    ...
    if column.foreign_keys or column.primary_key:
        continue
    ...

对此有任何解决方法吗? 我尝试在pk上使用内置过滤器,但是没有用。

from back.database import Base
class MyView(ModelView):
    def __init__(self, model):
        self.column_filters = [FilterEqual('_id', '_id')]
        super().__init__(model)

class User(Base):
    _id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50))

1 个答案:

答案 0 :(得分:1)

您可以只使用ModelView类的column_filters属性

如果只希望使用EqualFilter,它将如下所示:

class MyView(ModelView):
   column_filters = (FilterEqual(column=User._id, name='id'),)
   def __init__(self, model):
       super().__init__(model)

您还可以告诉flask_admin检测所有可能的过滤器,然后看起来像这样

class MyView(ModelView):
   column_filters = ('_id',)
   def __init__(self, model):
       super().__init__(model)