首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Django查询筛选项

使用Django查询筛选项
EN

Stack Overflow用户
提问于 2013-03-13 08:21:40
回答 2查看 100关注 0票数 0

我遇到了这个问题,想寻求你的帮助。

上下文:我有一袋球,每个球都有一个年龄(红色和蓝色)和颜色属性。

我想要的是得到前10个“最年轻”的球,最多有3个蓝球(这意味着如果10个最年轻的球中有3个以上的蓝球,那么就用最年轻的红色球代替“红”最老的蓝球)。

为了获得前十名:

代码语言:javascript
复制
sel_balls = Ball.objects.all().sort('age')[:10]

现在,为了满足“最多3个蓝球”的条件,我需要进一步处理:

  1. 遍历sel_balls并计数蓝球数(= B)
  2. 如果B <= 3:什么都不做
  3. 其他:获得额外的B-3红球,以取代最古老的(B-3)蓝色球(这些红色球肯定不会出现在原来的10个球已经取出)。我认为我可以通过在红色球列表中获取最老的年龄值来实现这一点,并执行另一个查询,如: add_reds =Ball.objects.filter(年龄>= oldest_sel_age):B-3

我的问题是:

  1. 是否有任何方法可以在一个查询中满足约束?
  2. 如果我必须执行2次查询,是否有比我前面提到的方法更快的方法?

谢谢大家。

EN

回答 2

Stack Overflow用户

发布于 2013-03-13 10:15:47

票数 0
EN

Stack Overflow用户

发布于 2013-03-13 11:45:32

你应该用注解来做。见文档

.filter().annotate()给出“哪里”之前

.filter().annotate()之后给出“拥有”(这是你需要的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15380107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档