Рассчитывать на связанную модель как гибридную собственность - PullRequest
0 голосов
/ 13 января 2019

У меня есть таблица с именем SectionAttempt, в которой есть много QuestionAttempts

Я хочу отобразить вычисляемое поле total_count, которое является числом попыток вопроса для SectionAttempt БЕЗ загрузки всех questionAttempts.

Глядя онлайн , я нашел это:

select([func.count()],
QuestionAttempt.__table__.c.section_attempt_id==SectionAttempt.__table__.c.id)
.correlate(SectionAttempt.__table__)
.as_scalar()

Я не уверен на 100%, почему это работает, но работает, когда я запрашиваю вот так:

 test_attempt = (SOMEQUERY
                .undefer(SectionAttempt.question_attempt_total_count)).one())

У меня есть вопросы:

  1. что здесь делает .correlate.
  2. То, как она добавляется в модель, заставляет меня импортировать мою модель QuestionAttempt, которая подвержена проблемам циклического импорта (что делать, если мне нужно сделать что-то похожее в моей модели QuestionAttempt). Как сохранить функциональность, но изменить ее на строковую ссылку (как мы делаем для отношений) или внутри функции (чтобы я мог импортировать попытку вопроса внутри функции, а не глобально)
...