如何在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)
我的数据库中有三个表
Student:
user_id | Student_name |
---|---|
1 | 4 |
2 | 4 |
3 | 1 |
Classroom:
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。
I have two models Student and Classroom in 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)
I have three tables in my database
student:
user_id | student_name |
---|---|
1 | 4 |
2 | 4 |
3 | 1 |
classroom:
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 |
In my 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(
)
This code returns all the classrooms in student_classes, but i want it to return all the classrooms where the student_id = self.request.user.id
So for example self.request.user.id returns 4, I want all the classrooms in student_classes table where student_id = 4.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用:
这将检索相关
学生
将request.user
作为user
的所有Classroom
。Work with:
This will retrieve all
Classroom
s for which a relatedStudent
has asuser
therequest.user
.