Я использовал Flask и SQLAlchemy для создания приложения на основе базы данных.Вот классы, которые я определил:
models.py
class HasTag(db.Model):
tagged_document_id = db.Column(db.Integer, db.ForeignKey('Document.id'), primary_key=True)
document_tag_id = db.Column(db.Integer, db.ForeignKey('Tag.id'), primary_key=True)
class Document(db.Model):
id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True, autoincrement=True)
title = db.Column(db.Text)
tag = db.relationship("Tag",
secondary=HasTag,
back_populates="tagged_document",
lazy="dynamic")
class Tag(db.Model):
id = db.Column(db.Integer, unique=True, nullable=False, primary_key=True, autoincrement=True)
label = db.Column(db.String, nullable=False)
tagged_document = db.relationship("Document",
secondary=HasTag,
back_populates="tag",
lazy="dynamic")
В приложении у меня есть форма расширенного поиска, где можно сделатьПолнотекстовый поиск по различным полям таблицы документа.
rout.py
@app.route("/search")
def search():
keyword = request.args.get("keyword", None)
query = Document.query
if keyword:
query = Document.query.filter(or_(
Document.title.like("%{}%".format(keyword)),
...
))
Дело в том, что я хотел бы иметь возможность искатьключевое слово, данное пользователем также в метке тега.Я пытался что-то вроде:
if keyword:
query = Document.query.join(Tag).filter(or_(
Document.title.like("%{}%".format(keyword)),
...,
Tag.label.like("%{}%".format(keyword))
))
Но я получаю эту ошибку: AttributeError: 'HasTag' object has no attribute 'foreign_keys'
Можете ли вы помочь мне?Спасибо!