SQLAlchemy: фильтр по объектам в списке участников - PullRequest
0 голосов
/ 29 августа 2018

Рассмотрим следующие классы,

class Person:
    id
    name
    jobs

class Job:
    name
    person
    person_id (FK)

, где Person.jobs относится к объектам класса Job. Теперь я хотел бы выполнить следующий запрос,

# for a given person p
Job.query.filter(Job.notin_(p.jobs))

Возможно ли это в SQLAlchemy ?

Пожалуйста, не то, чтобы я не хотел писать Job.query.filter(Job.person_id != p.id).

1 Ответ

0 голосов
/ 30 августа 2018

Нет!

Как объясняет документация о in_ , начиная с версии 1.2 SQLAlchemy, вы не можете иметь список экземпляров объекта, только:

  • список ID
  • пустой список
  • выберите
  • связанные параметры

Начиная с версии 1.2, только то, что вы описываете как «не хотите», является правильным ответом:

Job.query.filter(Job.id.notin_([j.id for j in person.jobs]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...