【问题标题】:Filter django queryset including a specific object in manytomany field过滤 django 查询集,包括 manytomany 字段中的特定对象
【发布时间】:2012-04-19 17:55:31
【问题描述】:

这是我的模型,

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 ...

【问题讨论】:

    标签: django filter many-to-many


    【解决方案1】:

    你的问题有点含糊。首先,阅读querying across relationships. 上的文档

    如果您想获得仅与具有特定字段值的 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'))
    

    编辑

    最后一个例子是使用the in lookup

    【讨论】:

    • 对不起,我的信息太少了。我要的案子正是最后一个!而且,如果课程有多个 target_age,我不能使用第二个查询,对吗?
    猜你喜欢
    • 1970-01-01
    • 2012-08-19
    • 2012-10-05
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多