1

我有一个 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”。我怎样才能进行这个搜索?

4

2 回答 2

1

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

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

有用!

于 2014-09-30T06:05:00.477 回答
0

这里的另一个选项是修改 MulticastView 类的 allowed_search_types :

class MulticastView(ModelView):
    allowed_search_types = (
        mongoengine.StringField,
        mongoengine.URLField,
        mongoengine.EmailField,
        mongoengine.Inet
    )
    ...
于 2018-01-02T23:03:13.303 回答