筛选在many-many字段中包含特定对象的django查询集



这是我的模型,

class Age(models.Model):
    layer = models.CharField(max_length=50)
    order = models.PositiveIntegerField()
    ...
class Course(models.Model):
    target_age = models.ManyToManyField('Age')
    ...

如何获取包含特定年龄的课程查询集
视图:

request_courses = Course.objects.filter(target_age ...

您的问题有点含糊。首先,阅读有关跨关系查询的文档。

如果您只想获得与具有特定字段值的Age相关的课程:

Course.objects.filter(target_age__FIELD=...)

其中FIELD是要查询的Age模型中的字段。

或者,如果你有一个Age对象,并且你想获得所有与特定Age对象实际相关的课程,你需要:

age = Age.objects.get(...)
courses = Course.objects.filter(target_age=age)

或者,如果你想获得与许多可能的Age中的至少一个相关的课程:

ages = Age.objects.filter(...)
courses = Course.objects.filter(target_age__id__in=ages.values_list('id'))

编辑

最后一个例子是使用in查找

最新更新