Python 在flask admin中搜索非文本列

Python 在flask admin中搜索非文本列,python,flask-sqlalchemy,flask-admin,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)) 我需要按“地址”字段进行搜索。 我不能这样做: class MulticastView(ModelView): column_searcha

我有一个sqlalchemy模型:

class Multicast(db.Model):
    __tablename__ = "multicast"
    id = Column(Integer, primary_key=True)
    addr = Column(Inet)
    name = Column(Unicode(65))
我需要按“地址”字段进行搜索。 我不能这样做:

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

因为我有一个例外:只能搜索文本列。无法设置“地址”的搜索。如何进行此搜索?

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

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

它起作用了

这里的另一个选项是修改MulticastView类允许的搜索类型:

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

你能补充完整的例子吗?我不能,因为那是很久以前的事了。但是我为flask admin创建了一个pull请求,它已经被合并了。因此,您不必为此编写自己的代码,因为它已经在flask admin中运行。你可以在这里找到公关