170 похожих чатов

Подскажите пожалуйста, есть модель Group(fk Module), Module(fk Lesson), Lesson(fk Teacher).

как получить имея инстанс группы всех учителей которые ведут уроки группы?

12 ответов

22 просмотра

погугли что такое prefetch related и select related вот неплохое видео https://www.youtube.com/watch?v=5-UN4YPDDQc

Алексей-Святкин Автор вопроса

вот так вот вроде работает, но похоже на костыль. lessons = Lesson.objects.filter(module__group= group_instance) teachers = list(set(Teacher.objects.filter(lesson__in=lessons))) Подскажите, пожалуйста, как правильно это сделаать?

Тут можно использовать distinct

Алексей-Святкин Автор вопроса

а в целом по другому как-то можно? типо через prefetch?

А какую задачу путаешься решить?

Алексей-Святкин Автор вопроса

есть модель Group, Module(fk Group), Lesson(fk Module, fk Teacher). как получить имея инстанс группы всех учителей которые ведут уроки группы?

Алексей-Святкин Автор вопроса

вот я построил такой запрос b = Group.objects.prefetch_related("modules").prefetch_related("modules__lessons").get(pk=1946) онотрабатывает. Но как получить отсюда все уроки группы? подсжкаите пожалуйста, а потом получить еще уникальный список преподавателей?

Алексей-Святкин Автор вопроса

ну на дистинкт я уже поменял, но вообще через prefetch реально как-то достать всех учителей группы, которые связаны через уроки в модулях группы?

Алексей-Святкин Автор вопроса

вот я построил такой запрос b = Group.objects.prefetch_related("modules").prefetch_related("modules__lessons").get(pk=1946) онотрабатывает. Но как получить отсюда все уроки группы? подсжкаите пожалуйста, а потом получить еще уникальный список преподавателей?

А почему так хочется через префетч делать?

Алексей-Святкин Автор вопроса

Чтобы разобраться. Он же джойнит таблицу группа, модуль, занятие, преподаватель по идее. Тоесть получить всех учителей группы должно быть не трудно

префетч, не джойнит, он делает отдельные запросы

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта