gpt4 book ai didi

python - django中具有多个参数的过滤器和链式过滤器之间的区别

转载 作者:IT老高 更新时间:2023-10-28 21:44:52 24 4
gpt4 key购买 nike

django中的多参数过滤器和链式过滤器有什么区别?

最佳答案

正如您在生成的 SQL 语句中看到的那样,区别不是某些人可能怀疑的“或”。这就是 WHERE 和 JOIN 的放置方式。

示例 1(相同的连接表):来自 https://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relationships

Blog.objects.filter(
entry__headline__contains='Lennon',
entry__pub_date__year=2008)

这将为您提供所有具有 (entry__headline__contains='Lennon') 和 (entry__pub_date__year=2008) 条目的 一个 条目的博客,这是您所期望的从这个查询。

结果:

Blog with {entry.headline: 'Life of Lennon', entry.pub_date: '2008'}

示例 2(链式)

Blog.objects.filter(
entry__headline__contains='Lennon'
).filter(
entry__pub_date__year=2008)

这将涵盖示例 1 的所有结果,但会产生更多的结果。因为它首先用 (entry__headline__contains='Lennon') 过滤所有博客,然后从结果过滤器 (entry__pub_date__year=2008)

不同之处在于它还会为您提供如下结果:

一个包含多个条目的博客

{entry.headline: '**Lennon**', entry.pub_date: 2000}, 
{entry.headline: 'Bill', entry.pub_date: **2008**}

在评估第一个过滤器时,由于第一个条目(即使它有其他不匹配的条目)而包含该书。当评估第二个过滤器时,由于第二个条目,该书被包括在内。

一个表:但如果查询不涉及连接表,例如 Yuji 和 DTing 中的示例。结果是一样的。

关于python - django中具有多个参数的过滤器和链式过滤器之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5542874/

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