【问题标题】:Flask-Admin: add filters on Primary keysFlask-Admin:在主键上添加过滤器
【发布时间】:2018-07-02 21:27:32
【问题描述】:

我正在尝试在主键上添加过滤器,但这不起作用。我浏览了源代码发现,它已被排除在外: 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))

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

    • 谢谢@luclechef。基本上,问题中提到的原因不是 pk 上的过滤器不起作用的原因。但是你的回答确实解决了我的问题。 User._id 确实只在我现有的代码中工作。我只使用_id
    猜你喜欢
    • 1970-01-01
    • 2022-01-01
    • 2018-03-23
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    相关资源
    最近更新 更多