gpt4 book ai didi

python - 当使用重复参数而不是链接过滤器时,如何对 Q 对象进行 AND 查找?

转载 作者:行者123 更新时间:2023-11-28 19:16:13 25 4
gpt4 key购买 nike

我意识到我的问题更简单,我将留下上一个问题的正文作为进一步解释。我在使用 Q 对象进行 AND 查询时遇到问题。它是如何工作的?我已经提供了 4 个示例,唯一能让它起作用的是链接过滤器时,但是我想避免这种情况,以便也使用 OR 构建更复杂的查询。


当 AND'ing 相同的查询参数时,我在跨与 Q 对象的关系进行查询时遇到问题。

稍微修改 Django 文档页面上的示例:“博客”模型与“作者”模型具有 m2m 关系。假设我想查询满足以下条件的所有博客:Bob 和 Mary 是作者,或者 Steve 是作者。我很确定做到这一点的唯一方法是使用 Q 对象,所以我将它分成几 block 。这是我到目前为止所尝试的:

Blog.objects.filter(Q(author__name='bob', author__name='mary'))

返回语法错误:关键字参数重复

Blog.objects.filter(Q(author__name='bob') & Q(author__name='mary'))

返回一个空的查询集

Blog.objects.filter(author__name='bob', author__name='mary')

返回语法错误:关键字参数重复

Blog.objects.filter(author__name='bob').filter(author__name='mary')

返回正确的结果,但是,现在我失去了使用 Q 对象作为 OR 参数的能力(我相信),所以我将不得不执行另一个查询并将结果放在 2 个查询集中,这是不希望的

我不确定我是否正确解释了我的情况,或者我是否以正确的方式处理它。有人有什么建议吗?

最佳答案

我相信这应该有效:

Blog.objects.annotate(author2=author).filter(Q(author__name='bob') & Q(author2__name='mary'))

关于python - 当使用重复参数而不是链接过滤器时,如何对 Q 对象进行 AND 查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com