Search on non-text column in flask-admin

橙三吉。 提交于 2019-12-11 12:12:41

问题


I have a sqlalchemy model:

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

I need to make search by "addr" field. I could not do it in this way:

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

Because i had an Exception: Can only search on text columns. Failed to setup search for "addr". How can i make this search?


回答1:


I found some solution. I overrided get_list method in MulticastView. I copied all source code from ModelView and added a line in search criteria code:

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

It works!




回答2:


Another option here is to modify the allowed_search_types for the MulticastView class:

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


来源:https://stackoverflow.com/questions/26009081/search-on-non-text-column-in-flask-admin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!