我有两个模型,分别是Major和Course:
class Major(models.Model):
required_courses = models.ManyToManyField(Course, related_name='required_courses')
class Course(models.Model):
# a bunch of fields...
我有几个专业(计算机科学,心理学等),每个专业包含一组不同的required_courses
。在我的views.py
中,我正在上这样的课程course = Course.objects.get(id=pk)
。是否有一种优雅的方法来查看我的任何required_courses
模型中的特定类是否在Major
中?
我正在尝试使用majors = Major.objects.all().values("required_courses")
,但只会返回<QuerySet [{'required_courses': 1}, {'required_courses': 2}, {'required_courses': 4}, {'required_courses': 5}]>
答案 0 :(得分:1)
属于该课程的专业位于相关集中:
course = Course.objects.get(id=pk)
print(course.major_set.all())
但是,您将其错误命名为“ required_courses”。 “相关名称”是Django为 other 模型创建的字段的名称。
course = Course.objects.get(id=pk)
print(course.required_courses.all())
您现在看到的是那样令人困惑,所以最好这样做:
class Major(models.Model):
required_courses = models.ManyToManyField(Course,
related_name='required_by_majors')
class Course(models.Model):
# a bunch of fields...
course = Course.objects.get(id=pk)
print(course.required_by_majors.all())