AttributeError: у объекта 'BaseQuery' нет атрибута 'whoosh_search'

Я использую Flask (python), создавая whooshe поиск, я выполнил все шаги из этой ссылки, также пытался из других ссылок, но каждый раз в конце я приходил к этой ошибке:

results = BlogPost.query.whoosh_search('cool')
AttributeError:'BaseQuery' object has no attribute 'whoosh_search' 

Вот мой код модели:

class BlogPost(db.Model):
    __tablename__ = 'blogpost'
    __searchable__ = ['title', 'content']
    __analyzer__ = StemmingAnalyzer()
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.Unicode) # Indexed fields are either String,
    content = db.Column(db.Text) # Unicode, or Text
    created = db.Column(db.DateTime, default=datetime.utcnow)

У меня ошибка по этому поводу:

@app.route('/search')
def search():
    results = BlogPost.query.whoosh_search('cool')
return results

2 ответа

Я также видел эту ошибку. Затем я обнаружил, что ошибка находится в models.py. Вы должны добавить whooshalchemy.whoosh_index(app, BlogPost) в конце кода модели.

Я сталкивался с подобной проблемой, если кто-то падал в эту кроличью нору.

В моем случае я обнаружил, что в моем models.pyЯ импортировал из sqlalchemy и использовал declarative_base в качестве основы для каждой модели. то есть:

      from sqlalchemy import Column, Integer, DateTime, Text, Boolean
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Book(Base):

в то время как в моем routes.py Я импортировал flask-sqlalchemy где вы используете db.Model в качестве основы:

      from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
db.init_app(app)

class Book(db.Model):

Были некоторые похожие ответы и на некоторые другие сообщения, но похоже, что при использовании flask-whooshalchemy или его аналогичных вариантов (whooshalchemy3, whooshalchemyplus) с использованием db.Model в качестве основы - это правильный способ инициализации модели для получения соответствующих атрибутов .

надеюсь, это поможет кому-то в будущем.

Другие вопросы по тегам