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

django使用Q对象构建查询集

郎建章
2023-03-14
问题内容

我有一个表格,可以让您选择多种项目类型进行过滤。例如,假设您的项目类型为“研究”,“培训”和“评估”。

基本上我想做的是使用Q对象构建查询集,例如:

projects.filter(Q(type__type="Research") | Q(type__type="Training"))

我只是不确定如何在没有filter()输入为字符串的情况下构建此字符串,这会产生错误:

querystring = ""
for t in types:
    querystring += " | Q(type__type="+t+")"
projects.filter(querystring) ## produces error: "ValueError: too many values to unpack"

那么,如何遍历类型以创建带有Q对象的查询集的方法呢?


问题答案:

您只是在构建与实际Q()查询对象没有任何关系的字符串。从第一个Q()实例开始并添加更多:

query = Q(type__type=types[0])
for t in types[1:]:
    query |= Q(type__type=t)
projects.filter(query)

您也可以使用该functools.reduce()函数执行此操作:

from functools import reduce
from operator import or_

query = reduce(or_, (Q(type__type=t) for t in types))
projects.filter(query)

reduce()调用与上述for循环完全相同。采取一系列Q(..)对象并将它们组合成一个更大的查询,其中所有部分都与|或操作结合在一起。



 类似资料:
  • 本文向大家介绍Django中自定义查询对象的具体使用,包括了Django中自定义查询对象的具体使用的使用技巧和注意事项,需要的朋友参考一下 自定义查询对象 - objects ①声明一个类EntryManager,继承自models.Manager,并添加自定义函数 ②使用创建的自定义类EntryManager 覆盖Models中的objects 以上就是本文的全部内容,希望对大家的学习有所帮助,

  • 问题内容: 如何在Angularjs中使用查询参数构建URL。 我看到了API $ location.search() 问题是$ location(url)是重定向到url。就我而言,我想为查询参数传递url和key:value对,并构建url。就像是 网址: params: 结果: 我喜欢使用该URL进行链接。我也看到了angular encoding ,字符。我可以避免吗? 编辑: 我的意图是

  • 问题内容: 我有一个基本的Django模型,例如: 我需要对上述模型执行复杂的查询,例如: 我已经尝试过以下使用法式饼的运气: 在梅花类的Meta类中,我将过滤设置为: 关于如何解决这个问题有什么想法吗? 问题答案: 你走在正确的轨道上。但是,应该将资源查找转换为ORM查找。 默认实现将查询关键字基于,值对进行拆分,然后尝试查找所查找资源与其等效ORM之间的映射。 你的代码不应仅在此处构建过滤器。

  • 我想知道是否可以不需要@Query注释,让Spring Data根据我的方法名称和下面实体关系的方法参数构造JPA查询。我想检索与特定Item相关的ItemLocations列表。我尝试了下面的签名,但没有@Query它不起作用。传入Item.id而不是Item对象本身是否更合适(高效/有效)? Spring数据版本:1.3.4。发布 工作Spring数据存储库API: 所需的Spring数据存储

  • 问题内容: 可以说我有一个龙目岛注释类 我知道我可以做: 是否有一种简单的方法可以使用现有对象作为模板并更改其属性之一来创建Foo对象? 就像是: 我在lombok文档中找不到此文件。 问题答案: 您可以使用参数为实例提供方法。 从文档中: 如果使用@Builder生成生成器以生成您自己的类的实例(除非将@Builder添加到不返回您自己的类型的方法中,否则通常是这种情况),您可以使用@Build

  • 问题内容: 我有以下四个表: SCHEDULE_REQUEST表: ID,APPLICATION_ID(FK) 应用表: ID,代码 USER_APPLICATION表: APPLICATION_ID(FK),USER_ID(FK) 用户表: ID,NAME 现在,我想创建一个条件条件,以便为指定的用户ID 选择。 我有以下代码: 您能帮我如何将查询过滤器传递给关系对象吗?我认为我在 “ appl