查看值是否与ManyToManyField相关

时间:2020-10-21 17:10:05

标签: python django

我有两个模型,分别是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}]>

1 个答案:

答案 0 :(得分:1)

Recommended reading

属于该课程的专业位于相关集中:

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())
相关问题