Если level — ForeignKey или OneToOneField курса, задайте queryset = Course.objects.select_related('level').all(). Это загрузит связанные уровни без дополнительного запроса на каждый курс.
Обновление queryset с учётом связанной модели level
Если level — ForeignKey или OneToOneField курса, задайте queryset = Course.objects.select_related('level').all(). Это загрузит связанные уровни без дополнительного запроса на каждый курс.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо снять комментарий со строки, определяющей queryset, и адаптировать её так, чтобы при выборке учитывался связанный объект level. Ниже приведён исходный фрагмент кода, который следует откорректировать:
from api.serializers import CourseSerializer
class CourseViewSet(viewsets.ModelViewSet):
serializer_class = CourseSerializer
# queryset = Course.objects.all()
permission_classes = (AllowAny,)
После выполнения задания запрос должен возвращать объекты курса вместе с их уровнем.
Ответ
Если level — ForeignKey или OneToOneField курса, задайте queryset = Course.objects.select_related('level').all(). Это загрузит связанные уровни без дополнительного запроса на каждый курс.
Минимальное изменение:
class CourseViewSet(viewsets.ModelViewSet):
serializer_class = CourseSerializer
queryset = Course.objects.select_related('level').all()
permission_classes = (AllowAny,)
Модель Course, viewsets и AllowAny должны быть импортированы. select_related оптимизирует получение данных, но не меняет автоматически JSON: отображение уровня определяет CourseSerializer. Для множественной или обратной связи нужен prefetch_related вместо select_related. Отдельно проверьте права: AllowAny вместе с ModelViewSet разрешает не только чтение, но и изменяющие действия, если они не ограничены другим способом.