如何从外键实现查询集中获取对象列表? (例如,当您使用“ for foo:print(x)中的x”遍历列表时)
以下代码:
class class Course(models.Model):
name = models.CharField(max_length=20)
user = models.ManyToManyField(User, related_name='typecourses')
description = models.TextField(max_length=500)
class Module(models.Model):
name = models.CharField(max_length=20)
courses = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='courses', null=True)
下面是我在“视图”中尝试过的两个查询,它们都输出与查询集相同的结果。
1/ module_taken = list(Course.objects.get(id=1).courses.all())
2/ module_taken = Module.objects.select_related('courses').all()
结果:
<QuerySet [<Module: Foo>, <Module: Bar>]>
任何帮助将不胜感激。
答案 0 :(得分:1)
我想你要做的是:
course_taken = Course.objects.get(id=1)
现在选择的课程包含id = 1的对象课程
modules_course = course_taken.courses.all()
现在的模块课程包含一个查询集,其中所有模块都以course_take作为其外键,请注意课程只是您在相关名称中输入的名称