第 6 章 在 API 中过滤


系统将集合识别为 "queryset"。您可以使用各种 operator 来过滤它。

流程

  • 要查找包含名称 "foo" 的组,请使用:

    http://<controller server name>/api/v2/groups/?name__contains=foo
    Copy to Clipboard Toggle word wrap
  • 要查找准确的匹配项,请使用:

    http://<controller server name>/api/v2/groups/?name=foo
    Copy to Clipboard Toggle word wrap
  • 如果资源是整数类型,您必须将 \_\_int 添加到结尾,以将字符串输入值转换为整数,如下所示:

    http://<controller server name>/api/v2/arbitrary_resource/?x__int=5
    Copy to Clipboard Toggle word wrap
  • 您可以使用以下方法查询相关资源:

    http://<controller server name>/api/v2/users/?first_name__icontains=kim
    Copy to Clipboard Toggle word wrap

    这会返回包含字符串"Kim"的名称的所有用户。

  • 您还可以一次过滤多个字段:

    http://<controller server name>/api/v2/groups/?name__icontains=test&has_active_failures=false
    Copy to Clipboard Toggle word wrap

    这将找到所有包含名称"test"的组,但没有活跃故障。

其他资源

有关可用的运算符类型的更多信息,请参阅 QuerySet API 参考

注意

您还可以监视 API,因为 UI 被用来查看如何过滤各种条件。

6.1. API 中的高级查询

您可以使用额外的查询字符串参数来过滤返回到与给定值匹配的结果列表。您只能使用数据库中存在的字段和关系进行过滤。确保指定的值中的任何特殊字符都是 URL 编码的。例如:

?field=value%20xyz
Copy to Clipboard Toggle word wrap

字段也可以跨越关系,仅适用于数据库中定义的字段和关系:

?other__field=value
Copy to Clipboard Toggle word wrap

要排除与特定条件匹配的结果,请为 field 参数添加 no __ 前缀:

?not__field=value
Copy to Clipboard Toggle word wrap

默认情况下,所有查询字符串过滤器都是 AND,因此仅返回与所有过滤器匹配的结果。要组合与多个条件中的任何一个匹配的结果,请为每个查询字符串参数添加前缀 or__

?or__field=value&or__field=othervalue
?or__not__field=value&or__field=othervalue
Copy to Clipboard Toggle word wrap

默认 AND 过滤同时应用于跨数据库关系过滤的每个相关对象。链过滤器会为每个相关对象单独应用过滤器。要使用它,请为查询字符串参数添加 chain__ 前缀:

?chain__related__field=value&chain__related__field2=othervalue
?chain__not__related__field=value&chain__related__field2=othervalue
Copy to Clipboard Toggle word wrap

如果您将第一个查询写为 ?relatedfield=value&relatedfield2=othervalue,它只会返回同时满足这两个条件的主对象。如使用链过滤器编写,它将返回与每个条件匹配的主对象的交集。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部