Как отфильтровать значения 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
?