首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django - Greedy与ManyToMany查询

Django - Greedy与ManyToMany查询
EN

Stack Overflow用户
提问于 2015-09-17 04:33:46
回答 2查看 94关注 0票数 0

我有一个模型,它有一个标签列表。

代码语言:javascript
复制
class Document(models.Model):
    docfile = models.FileField(upload_to='documents/%Y/%m/%d', max_length=150)
    tags = models.ManyToManyField(Tag)

我希望能够找到所有标记为X和Y的文档,但不只是X和Y。也就是说,当我搜索X和Y时,我希望显示标记为X、Y、Z的文档。

来自this问题的被接受的答案让我走得很远,但它返回的是带有这些标签的项目,并且只返回那些标签。注释限制了查询集。

EN

回答 2

Stack Overflow用户

发布于 2015-09-17 09:40:19

我想通了。在SO here上有一个很棒的资源。在我的特殊情况下,我想要链式过滤器。这就是我如何使用任意数量的标签来实现的。

代码语言:javascript
复制
docs = Document.objects

for tag in tags:
    docs = docs.filter(tags=tag)

这给了我需要的AND查询。

票数 1
EN

Stack Overflow用户

发布于 2015-09-17 05:11:40

您只是想要一个INNER JOIN --这是您跨关系进行过滤时的默认设置。

这应该是您想要的结果:

代码语言:javascript
复制
Document.objects.filter(tags=X, tags=Y)

这将使您获得同时具有标记X和标记Y的每个Document,而不考虑任何其他标记。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32618171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档