У меня есть таблица с именем 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())
У меня есть вопросы:
- что здесь делает .correlate.
- То, как она добавляется в модель, заставляет меня импортировать мою модель QuestionAttempt, которая подвержена проблемам циклического импорта (что делать, если мне нужно сделать что-то похожее в моей модели QuestionAttempt).
Как сохранить функциональность, но изменить ее на строковую ссылку (как мы делаем для отношений) или внутри функции (чтобы я мог импортировать попытку вопроса внутри функции, а не глобально)