В приложении Flask у меня есть таблицы
class Event(db.Model):
__tablename__ = 'event'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
event_name = db.Column(db.String(length=128), nullable=False)
event_to_meta = db.relationship('EventMeta', secondary='event_meta_tbl', lazy='subquery',
backref=db.backref('meta_events', lazy=True))
class EventMeta(db.Model):
__tablename__ = 'event_meta'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
meta_key = db.Column(db.String(length=128), nullable=False)
meta_value = db.Column(db.String(length=128), nullable=True)
events = db.relationship(Event, secondary='event_meta_tbl', backref='event_to_metas')
event_meta_tbl = db.Table('event_meta_tbl', db.metadata,
db.Column('event_id', db.Integer, db.ForeignKey('event.id',
ondelete='CASCADE'), primary_key=True),
db.Column('meta_id', db.Integer, db.ForeignKey('event_meta.id',
ondelete='CASCADE'), primary_key=True),
extend_existing=True)
Проблема, которая несколько отличает это, заключается в том, что запросы хотят выбирать События со значениями из таблицы EventMeta, где указан c meta_key указано.
Я пробовал широкий спектр запросов без успеха по строкам:
audience_filter=session.query(EventMeta).filter(EventMeta.meta_key=='audience').\
filter(EventMeta.meta_value.in_(audiences)).subquery()
events = session.query(Event).join(audience_filter).all()
все из которых возвращают пустой результат. Это должно быть довольно просто и понятно. Буду признателен за руководство, чтобы вывести меня на правильный путь.