Как получить атрибут объекта запроса sqlalchemy - PullRequest
0 голосов
/ 14 мая 2019

Код ниже написан в views.py в фреймворке фляги:

view.py:

motions = db.session.query(
    Motion.id,
    Motion.summary,
    Motion.motion_type_id,
    Motion_Type.description,
    Motion_Type.id,
    Motion.mp_op_type,
    Motion.judge_id,
    Judge.id,
    Judge.name,
    Motion.case_id,
    Case.id,
    Case.summary,
    Case.case_type_id,
    Case_Type.description,
    Case_Type.id,
    Motion.ruling_id,
    Ruling.name,
    Ruling.id
).filter(
    Case.id == Motion.case_id
).order_by(
    Judge.name,
    Case_Type.description,
    Ruling.name,
    Motion_Type.description
)

Как мне получить атрибут в запросе? Я хочу получить что-то вроде:

for x in motions:
    print(x.ruling())

Однако моя ошибка заключалась в том, что в views.py нет атрибута, называемого «правящий» в «движениях». Итак, мой вопрос, как получить атрибут в запросе? Я что-то упустил или мне нужно что-то вызвать из models.py или создать экземпляр в HTML-шаблоне? Очень растерян.

1 Ответ

0 голосов
/ 14 мая 2019

Проблема в том, что вы на самом деле не используете API запросов, как задумано.Похоже, вы ищете что-то вроде этого (при условии, что ваши отношения правильно настроены в ваших моделях):

import sqlalchemy as sa
motions_query = db.session.query(
    Motion
).join(
    Motion.case
).join(
    Case.judge
).join(
    Case.case_type
).options(
   sa.orm.contains_eager(Motion.case).contains_eager(Case.judge),
   sa.orm.contains_eager(Case.case_type)
).filter(
    Case.id == Motion.case_id
).order_by(
    Judge.name,
    Case_Type.description,
    Ruling.name,
    Motion_Type.description
)

for motion in motions_query:
    print(motion.case.summary)
    print(motion.case.judge.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...