在flask-admin中的非文本列中搜索

时间:2014-09-24 05:17:03

标签: python flask-sqlalchemy flask-admin

我有一个sqlalchemy模型:

class Multicast(db.Model):
    __tablename__ = "multicast"
    id = Column(Integer, primary_key=True)
    addr = Column(Inet)
    name = Column(Unicode(65))

我需要通过" addr"进行搜索领域。 我不能这样做:

class MulticastView(ModelView):
    column_searchable_list = ('name', 'addr',)
    column_filters = ('name', )
    model = Multicast

因为我有一个例外:只能搜索文本列。无法设置搜索" addr"。我怎样才能进行此搜索?

2 个答案:

答案 0 :(得分:1)

我找到了一些解决方案。我在MulticastView中覆盖了get_list方法。我从ModelView复制了所有源代码,并在搜索条件代码中添加了一行:

filter_stmt.append(func.text(Multicast.addr).like(stmt))

有效!

答案 1 :(得分:0)

此处的另一个选项是修改MulticastView类的allowed_search_types:

class MulticastView(ModelView):
    allowed_search_types = (
        mongoengine.StringField,
        mongoengine.URLField,
        mongoengine.EmailField,
        mongoengine.Inet
    )
    ...