Я создаю несколько объектов в приложении. При создании нового объекта сосуда (self) я использую код SQLalchemy для проверки правильности создания объекта. Одна из этих проверок заключается в проверке того, что определенный объект еще не существует с таким же атрибутом «имя» и общими элементами списка для атрибута «оборудование».
например. Я создаю объект судна, который имеет атрибут «имя» и атрибут «оборудование». Атрибут «name» просто имеет тип string, но атрибут «equipments» имеет тип array.
Не допускается создание судна, если это название судна уже существует И ЕСЛИ суда, которые уже были созданы с таким же именем, содержат оборудование, аналогичное оборудованию для создаваемого судна. Фильтрация по тому же имени уже работает, однако проблема заключается в создании фильтра для общего оборудования.
Другими словами, я пытаюсь создать фильтр, который проверяет общие элементы списка между оборудованием судов. Кто-нибудь знает ответ на этот вопрос?
if session.query(Vessel)
.filter(
and_(
func.lower(Vessel.name) == self.name.lower(),
Vessel.equipment_types.in_(self.equipment_types),
)
)
.first():
Я не ожидал, что этот код будет работать, потому что это сравнение «один ко многим», однако я не могу найти сравнение «многие ко многим» (отсюда и причина задавать этот вопрос).