【问题标题】:Django queryset filter trouble of manytomany field多对多字段的Django查询集过滤器问题
【发布时间】:2013-08-18 23:57:03
【问题描述】:

我有一个 ManyToMany 字段,例如模型 Articletags。现在有一个查询来选择所有Articletags 包含X1 和X2 和X3 ... 其中X1、X2、X3... 是Tag 对象。我怎样才能获得具有最终结果的查询集?

更正式地说:

class Tag(models.Model) {
    ...
}
class Article(models.Model) {
    tags = models.ManytoManyField(Tag)
}

【问题讨论】:

    标签: django model django-queryset


    【解决方案1】:

    由于您正在寻找特定文章的所有标签,您可以使用the Q filter,然后链接Qs

    tags = ['X1', 'X2', 'X3']
    qs = [Q(tags__name=tag.name) for tag in tags]
    
    query = qs.pop() #get the first element
    
    for q in qs:
        query &= q
    
    articles = Article.objects.filter(query)
    

    【讨论】:

    • 哇,Q班好强大!它完全符合我的需要。谢谢
    猜你喜欢
    • 1970-01-01
    • 2020-06-16
    • 2011-04-07
    • 2017-03-09
    • 2018-01-05
    • 2020-03-20
    • 1970-01-01
    • 2019-01-29
    • 2015-02-17
    相关资源
    最近更新 更多