Django фильтрует два уровня отношений между БД

У меня есть три модели, которые я пытаюсь подключить, чтобы я мог вытащить информацию о StudentItem на основе ID курса, который был передан.

Модели выглядят следующим образом:

class Student(models.Model):

    first_name = models.CharField(max_length=128, unique=False)
    last_name = models.CharField(max_length=128, unique=False)


class Course(models.Model):

    name = models.CharField(max_length=256, unique=False)
    course_student = models.ManyToManyField(Student)
    

class StudentItem(models.Model):

    item_student = models.ForeignKey('Student',on_delete=models.CASCADE)
    description = models.CharField(max_length=256, unique=False, blank=True)

Сейчас мой вид выглядит следующим образом:

class CourseDetailView(LoginRequiredMixin,DetailView):
    model = models.Course

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['student_item_list'] = StudentItem.objects.prefetch_related(Prefetch('item_student__id__course_student',queryset=Course.objects.filter(pk=self.kwargs['pk'])))
        return context

Я могу получить все связанные записи через предварительную выборку по всем моделям, но фильтрация набора запросов не работает. Я получаю все записи для каждого курса, независимо от ID курса, который был передан.

Надеюсь, это небольшое исправление. Очень признателен за помощь!

Вернуться на верх