SQLAlchemy — Поиск элементов, В которых Связь Содержит По Крайней Мере Один Элемент из списка

#python #sqlalchemy #flask-sqlalchemy

Вопрос:

У меня есть Product класс и Tag класс, которые имеют отношение «многие ко многим».

Product.tags дает мне список всех тегов для продукта.

У меня есть список тегов в качестве критериев поиска: ['tag1', 'tag2', 'tag3'] .

Как я могу получить список продуктов, содержащий хотя бы один тег, соответствующий списку?

Я могу легко решить эту проблему с помощью SQL, но я не совсем уверен, как решить ее с помощью ORM.

matching_products = Product.query.join(Product.tags).filter( ??? ).all()

Комментарии:

1. tags = ['tag1', 'tag2', 'tag3'] ; Product.query.join(Product.tags).filter(Product.tags.in_(tags)).all() ?

2. Ошибка: in_() not yet supported for relationships. For a simple many-to-one, use in_() against the set of foreign key values.