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 курса, который был передан.
Надеюсь, это небольшое исправление. Очень признателен за помощь!