当前位置: 首页 > 面试题库 >

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

章涵容
2023-03-14
问题内容

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


问题答案:

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

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

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

这将为你提供所有两个条目都具有一个条目的Blog (entry__headline__contains='Lennon') AND (entry__pub_date__year=2018),这是你从该查询中获得的期望。

结果:

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

示例2(链接)

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

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

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

具有多个条目的单个Blog

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

评估第一个过滤器时,由于包含第一个条目,因此将其包括在内(即使该条目的其他条目不匹配也是如此)。当评估第二个过滤器时,由于有第二个条目,因此将本书包括在内。

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



 类似资料:
  • 问题内容: 可以将CSS选择器传递给jQuery函数,例如: jQuery还具有一些过滤器,例如和: 我一直在寻找某种语法规则来区分两者,并且我想也许jQuery过滤器总是使用。 但是,某些CSS选择器也使用。例如: 有没有人知道您使用的是CSS选择器还是jQuery过滤器的任何智能提示? 问题答案: 我一直在寻找某种语法规则来区分两者,并且我想也许jQuery过滤器总是使用。 但是,某些CSS选

  • 主要内容:FilterChain 接口,Filter 链的拦截过程,Filter 链中 Filter 的执行顺序,示例在 Web 应用中,可以部署多个 Filter,若这些 Filter 都拦截同一目标资源,则它们就组成了一个 Filter 链(也称过滤器链)。过滤器链中的每个过滤器负责特定的操作和任务,客户端的请求在这些过滤器之间传递,直到传递给目标资源。 FilterChain 接口 javax.servlet 包中提供了一个 FilterChain 接口,该接口由容器实现。容器将其实例对象

  • 问题内容: 我的应用程序中有2个过滤器。根据某些条件,我想选择是否执行第二个过滤器。有没有办法做到这一点? 我做了一些谷歌搜索,但没有成功。我希望请求继续执行而不执行第二个过滤器。那可能吗? 任何帮助将不胜感激。 问题答案: 您可以在请求中设置一个属性,然后在第二个过滤器中对其进行检查。 您可以像这样简化上面的代码: 这样,您只需检查属性“ executeSecondFilter”的存在

  • 问题内容: 我正在建立一个显示api数据的项目,现在我需要对其进行过滤。 我已经完成了类别过滤器,现在我必须做一个价格范围过滤器,以便这两个过滤器可以一起工作,但是我在努力正确地做到这一点。对于价格范围过滤器,我使用2个输入和一个Submit按钮。 我得到了一系列对象,看起来像这样; 我有状态: 如果我的弯管机状态已更改,则设置状态的功能另外,对于开始状态和结束状态,也有类似的功能当我为价格设置状

  • 问题内容: 我正在尝试建立一个查询,该查询将找到所有用户文档(docType =用户),然后根据许多过滤器对其进行过滤。例如位置,性别,年龄等。过滤器是根据我正在构建的搜索功能上的用户输入来添加/删除的。 以下没有结果: 以下返回结果: 后者虽然返回结果,但从长远来看是行不通的,因为我可能想为年龄,性别等添加一个额外的过滤器,而且我似乎无法添加多个字段。如果我删除位置过滤器,则第一个查询有效。 问

  • 问题内容: 我正在尝试使用多个过滤器+自定义过滤器功能过滤列表。 最初工作的jsfiddle示例是http://jsfiddle.net/ed9A2/1/,但现在我想更改年龄过滤的方式。 我想添加一个自定义过滤器,以使其 年龄 基于两个输入值 min_age 和 max_age (在年龄之间)进行过滤。 在研究文档之后。我发现有人有类似的问题,用户Mark Rajcok回答了http://docs