如何在 Django 的多对多字段中获取对象的查询集
How to get queryset of objects in many to many field in Django
我在 models.py
中有两个模型 Student 和 Classroom
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)
我的数据库中有三个 table
学生:
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(
)
此代码 return 用于 student_classes 中的所有教室,但我希望它用于 return student_id = self.request.user.id 中的所有教室
例如 self.request.user.id returns 4,我想要 student_classes table 中的所有教室,其中 student_id = 4.
合作对象:
Classroom.objects.filter(
<strong>student__user=request.user</strong>
)
这将检索相关 Student
具有 user
和 request.user
的所有 Classroom
。
我在 models.py
中有两个模型 Student 和 Classroomclass 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)
我的数据库中有三个 table
学生:
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(
)
此代码 return 用于 student_classes 中的所有教室,但我希望它用于 return student_id = self.request.user.id 中的所有教室
例如 self.request.user.id returns 4,我想要 student_classes table 中的所有教室,其中 student_id = 4.
合作对象:
Classroom.objects.filter(
<strong>student__user=request.user</strong>
)
这将检索相关 Student
具有 user
和 request.user
的所有 Classroom
。