Как получить кверисет объектов в поле "многие ко многим" в Django

У меня есть две модели Student и Classroom в models.py

class Classroom(models.Model):
    classroom_subject = models.CharField(max_length=100)
    classroom_code = models.CharField(max_length= 5, default = '00000')
    teacher = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

class Student(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
    student_name = models.CharField(max_length=100)
    classes = models.ManyToManyField(Classroom, blank = True)

У меня есть три таблицы в моей базе данных

student:

user_id student_name
1 4
2 4
3 1

классная комната:

id classroom_subject classroom_code
1 maths 12345
2 english 12345
3 biology 12345

student_classes:

id student_id classroom_id
1 4 1
2 4 2
3 1 1

В моем файле views.py

class StudentClassesView(ListView):
    model = Classroom
    template_name = 'student_classroom_list.html'
    context_object_name = 'classroom_list'

    
    def get_queryset(self):
        student_id = self.request.user.id
        return Student.classes.through.objects.filter(
        )

Этот код возвращает все аудитории в student_classes, но я хочу, чтобы он возвращал все аудитории, где student_id = self.request.user.id

Например, self.request.user.id возвращает 4, я хочу получить все аудитории в таблице student_classes, где student_id = 4.

Работа с:

Classroom.objects.filter(
    student__user=request.user
)

Это позволит получить все Classroom, для которых связанный Student имеет в качестве user значение request.user.

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