问题标签 [django-queryset]

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 投票
2 回答
600 浏览

python - 关于 Q 对象和外键的谜题

我有一个这样的模型:

我有一个函数,它传递了一个过滤器列表,其中每个过滤器的格式为 {'type':something,'value':x}。此函数需要返回一组结果,并将所有过滤器组合在一起:

每个 Subthing 都有一个布尔属性“main”。每个事物都有 1 个且只有 1 个子事物,其中 main==True。

我现在需要添加过滤器来返回所有具有 Subthing 的事物 wheremain==Truesubproperty==filter['value']

我可以将其作为Q我正在构建的对象的一部分吗?如果没有怎么办?在我的新过滤器之前获得的查询集可能非常大,所以我想要一种不涉及循环结果的方法。

0 投票
2 回答
205 浏览

django - 自定义计数列表

我有这段代码,用于生成分类为年份、品牌、系列、车身样式和车辆颜色的记录列表。我想以这种方式进一步自定义:

  • 对于这一年,我只想到 2004 年是个人……其余的将属于其他,即 2009、2008、2007、2006、2005、2004、其他。
  • 对于品牌,我想显示人气最高的六个品牌……我正在使用模型中的一个字段来指定品牌的知名度,其值为主要(最高)、次要或第三。其余的将属于其他。
  • 对于车身样式和颜色,我希望拥有少于 3 条记录的项目属于其他。

我的代码如下:

0 投票
1 回答
571 浏览

django - 如何从我的带注释的 Django 查询中过滤/排除非活动评论?

我正在使用object_list通用视图快速列出一组文章。每篇文章都附有评论。该查询使用注释Count()数来注释评论数,然后order_by()使用注释数。

注释是django.contrib.comments框架的一部分,并通过通用关系附加到模型。我在我的文章模型中添加了一个明确的反向查找:

问题是,这会计算“非活动”评论;有is_public=False或的is_removed=True。如何排除任何不活跃的评论?

0 投票
5 回答
320 浏览

django - 如何在 Django 中强制执行基于帐户的分离

我有一个具有单帐户模型的 Django 应用程序。我们正在将其转换为多帐户,因此几乎每个模型都会有一个ForeignKey(Account).

确保每个Account(每个帐户都在自己的子域中)只能访问自己的数据的最简单方法是什么?我们有一个填充子域的中间件,以及每个请求的当前帐户。

filter(...., account = request.account)我们可以通过在我们所有的视图中添加一个艰难的方式来做到这一点。这是不可取的,因为,

  1. filter(...., account = request.account) 将被添加到所有查询中,从而使此操作不枯燥、重复且容易出错。
  2. 更大的风险是如果缺少过滤器,任何地方都有安全风险。
0 投票
2 回答
23724 浏览

django - 如何正确查询列表(或另一个 ManyToManyField)中所有对象的 ManyToManyField?

我对构建 Django 查询的最佳方法感到困惑,该查询检查字段(或列表)的所有元素ManyToMany是否存在于另一个ManyToMany字段中。

举个例子,我有几个Persons,他们可以拥有多个Specialty。也有Job人们可以启动的s,但他们需要一个或多个Specialtys才有资格启动。

一个人只有具备工作所需的所有专业才能开始工作。因此,再次举个例子,我们有三个专业:

  • 编码
  • 唱歌
  • 跳舞

我有一个Job需要唱歌和跳舞的专业。一个有唱歌和跳舞特长的人可以开始,但另一个有编码和唱歌特长的人不能——因为工作需要一个既能唱歌又能跳舞的人。

所以,现在我需要一种方法来找到一个人可以从事的所有工作。这是我解决它的方法,但我确信有一种更优雅的方法:

这是因为 using将返回与该人的任何Job.objects.filter(specialty__in=person.specialties.all())专长相匹配的工作,而不是所有专长。使用此查询,需要 Singing and Dancing 的工作将出现在唱歌的编码员中,这不是所需的输出。

I'm hoping this example is not too convoluted. The reason I'm concerned about this is that the Specialties in the system will probably be a lot more, and looping over them doesn't seem like the best way to achieve this. I'm wondering if anyone could lend a scratch to this itch!

0 投票
9 回答
10547 浏览

django - 快速查找 Django QuerySet 中的最后一个元素?

我有一个名为 Valor 的模型。Valor 有一个机器人。我这样查询:

获得最后的Valor the r机器人。Valor.objects.filter(robot=r).count() 大约是 200000,在我的 PC 中获取最后一个项目大约需要 4 秒。

我怎样才能加快速度?我查询的方式不对?

0 投票
3 回答
1143 浏览

django - Django 的 list_details 视图将查询集保存到内存(不更新)?

我有一个看起来像这样的自定义模型管理器:

这很好用;但是,我在使用 Django 的generic.list_detail视图时遇到了问题object_detail,并且object_list:查询集似乎只加载了一次,因此,它没有获取应有的项目,因为我认为utcnow()时间只被调用了一次(当它首次加载)。

我认为这是故意的,并且是为了提高性能 - 但是,这意味着视频会先显示在网站的其他地方(在我不在视图中的地方object_detail),然后才能在object_detail视图中使用(请参阅下面的 urls.py)。这导致 404...

有任何想法吗 ?还是我必须编写自己的自定义视图来避免这种情况?

谢谢!

网址.py

0 投票
1 回答
156 浏览

django - Django:根据相关模型的计数差异过滤模型

我有一堆 Order 对象,每个对象都连接到一个或多个 OrderRow 对象(通过 Order.order_rows.all() 作为与其父 Orders 的反向关系可见)。

每个 OrderRow 都有一个collection_status属性,可以是 'collected'、'uncollected' 或一堆其他特殊值。每个订单都有一个状态属性,其中一个有效值是“处理中”。

我在尝试构建一个列出具有以下条件的 Order 对象的 Order QuerySet 时不知所措:订单状态为“处理中”,其collection_status='collected'OrderRows 的计数小于其 OrderRows 的总数。即完全未收集或部分收集但未完全收集的订单。

明确地说:

两行订单,均“未收集”:包含在 QS
订单中,包含三行,一个“已收集”,两个“未收集”:包含在 QS
订单中,两行均“已收集”:未包含在 QS 中!

(您可以将 'uncollected' 替换为任何其他不是 'collected' 的值,并且条件仍然相同;它是 'collected' 与任何其他 collection_status)

我已经做到了 Order.objects.filter(status__exact='processing'),但除此之外,我在注释、Q() 对象等方面的所有尝试都失败了。

0 投票
2 回答
3221 浏览

python - Use with form.fields.queryset?

Is it possible to set a form's ForeignKey field's queryset so that it will take separate queryset's and output them in <optgroup>'s?

Here is what I have:

views.py

In my Template model, I have default Templates and User-created templates. I want them to be visibly separated in the <select> box eg.

Can this be done?

0 投票
1 回答
277 浏览

django - django queryset datetime 值减法

我有以下领域的模型。

在查询此类模型时,我希望有额外的列来保持当前日期和前一个日期之间的差异。因此,对于 10 行,它将有 9 个值,第一个是无。有没有办法通过查询集实现这一点?或者在我将查询集传递给模板之前,也许我应该搞砸并创建额外的列表来保存这些差异?请指教。