Как получить кверисет объектов в поле "многие ко многим" в 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.