我有一个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"。我怎样才能进行此搜索?
答案 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
)
...