Как отфильтровать значения flask_sqlalchemy.Model по полю ManyToMany?

У меня есть 2 модели между которыми идет связь ManyToMany:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy


app = Flask(__name__)
db = SQLAlchemy(app)


post_tags = db.Table('emergency_tags',
    db.Column('tag_id', db.Integer, db.ForeignKey('Tag.id')),
    db.Column('emergency_id', db.Integer, db.ForeignKey('Emergency.id')),
)


class Tag(db.Model):
    ''' Теги '''

    icon = 'pound'
    __tablename__ = 'Tag'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255), unique=True, nullable=False)
    emergencys = db.relationship('Emergency', secondary=post_tags,
                                 back_populates='tags')

    def __str__(self):
        return self.title


class Emergency(db.Model):
    ''' Вызовы '''

    icon = 'fire-alert'
    __tablename__ = 'Emergency'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255), nullable=False)
    description = db.Column(db.Text(), nullable=True)
    urgent = db.Column(db.Boolean(), nullable=True)
    tags = db.relationship('Tag', secondary=post_tags, back_populates='emergencys')

    def __str__(self):
        return self.title

Я хочу сделать фильтр для таблицы Emergency, который будет работать для полей title, description и tags:

def filter_list_elements(text: str):
    filtered_emergencies = Emergency.query.filter(
        or_(
            Emergency.title.like(f'%{text}%'),
            Emergency.description.like(f'%{text}%'),
            Emergency.tags.in_(Tag.title.like(f'%{text}%')) # Выдает ошибку
        )
    ).order_by(Emergency.title).all()

    return filtered_emergencies

Как я могу реализовать фильтр Emergency по tags.title?


Ответы (0 шт):