问题标签 [django-q]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
49 浏览

python - 如何使用 Q 对象来测试列表成员资格?

使用普通的 Django 查询集,如果我想检索“a”属性为 1、2 或 3 的所有 myObjects,我会执行以下操作:

但我想使用 Q 对象来做到这一点。我将如何使用 Q 对象编写等效查询?

0 投票
1 回答
64 浏览

django - 如何使用 Q 对象检查任意长度列表的任何成员是否处于多对多关系

假设我有以下 Django 模型:

此外,假设我有一个独特的 myObj1 列表:

现在,我想使用 Q 对象编写一个 Django 查询,以便它返回所有具有 myTargetList 成员作为 myLocalObj1 的 myObj2。此外,我事先不知道 myTargetList 的确切大小。

我该怎么做?这显然行不通:

0 投票
2 回答
67 浏览

django - 如何使用 Q 对象检查任意长度列表的任何成员是否处于多对多关系?

假设我有以下 Django 模型:

此外,假设我有一个独特的 myClass1 列表:

现在,我想使用 Q 对象编写一个 Django 查询,以便它返回所有具有 myTargetList 的任何成员的 myClass2 作为 myLocalClass1。此外,我事先不知道 myTargetList 的确切大小。

我该怎么做?这显然行不通:

0 投票
2 回答
325 浏览

python - Django/Python DRY:使用 Q 对象和模型属性时如何避免重复代码

我正在尝试构建一个搜索页面,该页面将允许用户找到满足特定阈值标准的模型的任何实例,并且在避免严重冗余代码时遇到了麻烦。我希望有更好的方法来做到这一点。这是一个稍微做作的示例,应该说明我正在尝试做的事情,并在最后调整了相关代码。用户将使用复选框与搜索进行交互。

模型.py:

视图.py:

我想减少的相关代码如下,这几乎直接来自我的项目,名称已更改。

基本上我希望用户能够找到满足给定阈值级别的某个对象的所有实例。例如,所有他们认为不好的冰淇淋和所有他们认为好吃的冰淇淋。

这段代码有很多我不满意的地方。我不喜欢检查 Q 对象是否尚未针对每个可能的阈值实例化,但看不到绕过它的方法。此外,如果这是一个非 django 问题,我会使用一个循环来检查每个给定的阈值,而不是把每个阈值都写出来。但同样,我不知道该怎么做。

最后,最大的问题是,我需要检查模型可能有 20 个不同属性的阈值。就目前而言,我必须为每个都编写一个新的阈值检查器,每个都与另一个略有不同(他们正在检查的属性的名称)。我希望能够编写一个通用检查器,然后将其传递给特定属性。有没有办法解决这个问题,或者我的其他两个问题?

谢谢!

0 投票
4 回答
466 浏览

django - 如何将 django 的 Q 与 django taggit 一起使用?

我有一个标有“一”和“二”的 Result 对象。当我尝试查询标记为“一”“二”的对象时,我什么也得不到:

为什么它不适用于 Q?我怎样才能让它工作?

0 投票
1 回答
779 浏览

python - Django Q 过滤器没有按预期工作

我创建了一个库风格的搜索表单(您可以在其中添加新行以进一步搜索,并使用 AND、OR、AND NOT、OR NOT 等链接词)以允许他们在表单中构建搜索语句,然后我尝试将其转换为进入 Q 滤波器。出于某种原因,如果其中有 OR,我生成的过滤器似乎会返回所有内容。(“或在其中”是指用户选择或作为他们的陈述)。

示例:我想创建一个 Q 过滤器,以便我将获取具有 NAME 作为其数据字段和 Test 作为其值的对象或以 Material 作为其数据字段和 Steel 作为其值的对象。

当我打印出创建的 Q 时,这就是我得到的:

阅读该声明,它似乎应该工作,但它没有而且似乎只是返回所有内容。

这不完全是我所拥有的,但它是表单外观的一个示例: 在此处输入图像描述

更新:我更改了我的代码,以便生成的 Q 语句改为:

或者,以扩展形式:

尽管如此,以下代码仍会打印出数据库中的所有内容:

0 投票
0 回答
517 浏览

django - Django 使用 Q 和简单的过滤器查找生成不同的排除查询

我的模型有一个简化的方案:

因此 django 为以下语句生成两个不同的查询:

1) 用 Q 对象排除

2) 使用字段查找排除

这是正常行为吗?它产生不同的查询,结果我们可以从数据库中获取不同的项目。例如,我们有以下数据库表:

第一条语句将返回 1-Seagull 对象,第二条语句将返回空查询集。这看起来不像是正确的行为。

0 投票
1 回答
82 浏览

python - 使用 Q 自动生成 django 查询

为了生成一些查询,我使用以下代码:

我确信有一种方法可以写得更紧凑。如何?我试过使用reduce函数:

但是我遇到了语法错误。怎么了?

0 投票
1 回答
93 浏览

django - Q 查询中的重复结果涉及与模型的多对一关系

我有一个Car模型和一个Passenger带有外键的模型到一个Car对象。CarPassenger模型都有一个字段name

我想获取所有在汽车或任何乘客姓名中包含“香蕉”的汽车,所以我尝试了:

奇怪的是,当我有一个Car名为 'banana' 并且其中有三个乘客叫任何东西(匹配或不匹配 'banana')时,它会返回 match 的三倍Car

问题是:

  • 为什么?

  • 怎样才能只回一次车?我认为这.distinct()会奏效,但也许有更好的方法。

我正在使用 Django 1.5。

0 投票
1 回答
138 浏览

python - 如何使用 Q 对象过滤 CharField 作为数字

我有一个数据库,其中我要过滤的属性作为 CharField 给出。

属性包含作为字符串的数值。例如“5.0”

我想使用 Django Q 对象基于字符串属性的数字值执行“小于”过滤(<),因此例如我想获取属性小于 3.0 的行。

我知道具有“额外”功能的解决方案,但据我所知,“额外”不会将 Q 对象作为属性。

对此有任何想法吗?