Прямой запрос объекта таблицы ассоциаций

Мне нужно напрямую запрашивать отношения, так как я должен отображать их отдельно.

task_user = db.Table(
    'pimpy_task_user',
    db.Column('task_id', db.Integer, db.ForeignKey('pimpy_task.id')),
    db.Column('user_id', db.Integer, db.ForeignKey('user.id'))
)

Как мне это сделать в SQLAlchemy? Когда я пытаюсь это:

tasks_rel = task_user.join(Task).join(User).filter(Task.group_id == group_id)

Это вызывает эту ошибку:

AttributeError: 'Join' object has no attribute 'filter'

person JelteF    schedule 24.01.2014    source источник


Ответы (1)


использование, которое вы указали выше, создает join(), которая является базовой (не ORM) конструкцией, представляющей соединение() двух таблиц (но не полноценный метод select()).

при использовании ORM вы обычно начинаете SELECT с объекта Query. Запросы из самого класса — это шаблон, предлагаемый такими расширениями, как flask-sqlalchemy, но эти расширения обычно в этом отношении сбивают с толку. Имея любой класс или таблицу, вы можете запросить его с помощью объекта Query:

session.query(task_user).join(Task).join(User).filter(Task.group_id == group_id)
person zzzeek    schedule 25.01.2014