Django通过最后创建的对象进行反向查询

2024-04-17

我有两个模型:

class SomeActivity(models.Model):
    name = models.ChartField(max_length=100)

class SomeStatus(models.Model):
    name = models.CharField(max_length=100)
    status = models.IntegerField(choises=STATUS_CHOISES)
    some_activity = models.ForeignKey(SomeActivity, related_name='statuses')

活动的最后创建状态是当前状态。为了得到它,我使用这个代码:

try:
    last_status = some_activity.statuses.latest('id')
except:
    last_status = None

但问题是当我想要进行返回所有的查询时Activities有一个last_status匹配status__in=[1, 2].


这个解决方案有点扭曲,但我认为它会起作用:

from django.db.models import Max

max_status_ids = SomeActivity.objects.filter(statuses__isnull=False).annotate(
              last_status_id=Max('statuses__id')
              ).values_list('last_status_id', flat=True)
status_satisfied_ids = SomeStatus.objects.filter(id__in=list(max_status_ids),
              status__in=[1, 2]).values_list('id', flat=True)
activities = SomeActivity.objects.filter(statuses__id__in=list(
              status_satisfied_ids))

我希望有更好的解决方案。


update

Try

max_status_ids = SomeActivity.objects.annotate(last_status_id=Max('statuses')
                                    ).values('last_status_id')
activities = SomeActivity.objects.filter(statuses__in=max_status_ids,
                                         statuses__status__in=(1,2))
  1. Django 在以下情况下自动生成子查询qs, qs.values() or qs.values_list()之后使用__in抬头。因此不需要用/包装查询集list()(这也会引入不必要的评估,从而引入不必要的中间 SQL)或编写flat=True inside qs.values_list()
  2. statuses__id__in里面查找activities已经引入了表连接,这个最好移动status__in from status_satisfied_ids into activities利用加入的优势。要不然,status_satisfied_ids会引入额外的选择。

或者你可以使用PostgreSQL 的窗口函数 http://www.postgresql.org/docs/9.2/static/tutorial-window.html直接按排名位置进行过滤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django通过最后创建的对象进行反向查询 的相关文章

  • 调试:获取调用函数的文件名和行号?

    我目前正在用 Python 构建一个相当复杂的系统 当我调试时 我经常在几个脚本中放入简单的打印语句 为了保持概览 我经常还想打印出打印语句所在的文件名和行号 我当然可以手动执行此操作 或者使用类似这样的操作 from inspect im
  • for 循环遍历单词

    我之前的帖子引起了很多混乱 其中充斥着与我的问题无关的答案 我的错是没有澄清事情 我标记了该帖子 这是新帖子 所以基本上我想做一个单词的连接 EG1 input jason sonny nyorth output jason sonny n
  • 带有透明图像的可拖动 Tkinter 标签仍然覆盖父画布中的图像

    我正在努力在背景图像顶部添加可拖动标签 其中标签是具有透明背景的图像 用于标签本身的图像是透明的 但标签本身相对于其父画布不透明 由于标签是可拖动的 我无法轻松使用父图像作为标签 并将透明图像粘贴在顶部 龙是一个可拖动的标签 具有透明背景
  • 如何从 TKinter 和 SQLite3 中的列表框中删除行

    我试图弄清楚如何从列表框和 sqlite3 中删除一行 我的底部有一个 delButton 函数 我需要从列表框和sql中删除该行吗 我不确定我在这里做什么 就删除部分而言 我通过复制和粘贴各种示例将该功能放在一起 from Tkinter
  • 在QT中以不同的时间间隔更新GUI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如何在QT中以不同的时间间隔更新GUI 最好的是我可以控制时间间隔 我知道 QTimer 可以在同一时间间隔更新 GUI 但我
  • Python 在打开套接字时可以选择哪个网络适配器吗?

    运行 python 应用程序的目标计算机将具有三个可用的网络接口 一般来说 所有三个网络都会有很大不同 但是三个网络中的两个可能位于相似的网络上 在下面的示例中 我无法控制 ETH 2 上的目标地址 因为它是预先配置的系统 因此我被迫以编程
  • 在python中查找文件

    我有一个文件可能位于每个用户计算机上的不同位置 有没有办法实现文件的搜索 我可以传递文件名和目录树进行搜索的方法吗 os walk http docs python org library os html os walk就是答案 这将找到第
  • 如何使用Python内置的map和reduce函数计算字符串中的字母频率

    我想使用Python的map和reduce内置函数来计算字符串中字母的频率 谁能提供一些关于我如何做到这一点的见解 到目前为止我所得到的 s the quick brown fox jumped over the lazy dog Map
  • 在嵌套有序字典 python 中查找给定键的值

    我试图从嵌套的 OrderedDict 中查找给定键的值 关键点 我不知道这个字典会嵌套多深 我正在寻找的键的名称是不变的 它将位于字典中的某个位置 我想返回本例中名为 powerpoint color 的键的值 mydict Ordere
  • python 解码部分 utf-8 字节数组

    我从不了解 UTF 8 规则的通道获取数据 因此 有时当 UTF 8 使用多个字节来编码一个字符并且我尝试将部分接收到的数据转换为文本时 我在转换过程中遇到错误 根据接口的性质 没有任何结束的流 我无法找出数据何时已满 因此我需要处理部分
  • 在 python 中检查堆栈中的局部变量

    我编写了一个小函数 它在堆栈中查找一级并查看其中是否有变量 但是我如何将这个函数变成一个可以在堆栈中一直查找直到找到一个局部变量并购买某个特定名称的函数 import inspect def variable lookup variable
  • Django - 检测用户是否在线/离线

    我正在使用 Django 1 10 和 Django REST 我需要知道用户是否登录 离线 在线 我怎样才能做到这一点 我正在使用基于令牌的身份验证 我试过这个article http www djangocurrent com 2011
  • python 正则表达式:匹配空格字符或字符串结尾

    我想匹配文本中的空格字符或字符串结尾 import re uname abc assert re findall s s uname uname assert re findall s s uname uname aa assert not
  • 是否可以通过 MX 查找获取端口?

    我正在了解什么是的旅程从 Python 代码发送电子邮件的正确方法 https stackoverflow com questions 50695188 what is the proper way to actually send mai
  • python matplotlib 无边框表格

    我在表格顶部有一个由以下示例生成的图 表格数据被随机数替换 实际绘图被一些任意函数替换 import numpy as np import matplotlib pylab as plt fig ax plt subplots ntp 17
  • python 拆分而不创建空白

    我明白为什么使用 split 创建空白很重要 这要归功于这个问题 https stackoverflow com questions 2197451 why are empty strings returned in split resul
  • 检查 Django 模板内的权限

    我可以在 Django 模板内使用 Auth 应用程序的权限检查吗 我想在模板末尾为特权用户显示一个简单的表单 更重要的是 我应该这样做还是这不是 Django 方式 如果您要检查模板中的权限 以下代码就足够了 if perms app l
  • 如何捕获密码提示

    我有以下代码 更新为包括 pexpect import sys import subprocess import pexpect print 0 ssh subprocess Popen ssh A t email protected cd
  • 如何使用 numpy 数组加速分形生成?

    这是我为使用牛顿方法制作分形而编写的一个小脚本 import numpy as np import matplotlib pyplot as plt f np poly1d 1 0 0 1 x 3 1 fp np polyder f def
  • 如何从具有另一个环境的另一个脚本运行一个具有其环境的Python脚本?

    我有两个脚本 script1 py and script2 py script1 有它自己的环境 比如 python 2 而 script2 有它自己的环境 比如 python 3 如何使脚本 1 调用脚本 2 及其相应的环境 Thanks

随机推荐

  • Linq 中按子集合中的最小值对父集合进行排序

    Parent List
  • 如何平滑分段的斑点?

    我收到一些闪烁 锐线 以及分段斑点 如何减少它们以使边界更平滑 为了更清楚起见 我附上了带有输入和预期输出的图像 请注意 它是二进制图像 我没有原始图像 灰色 输入是二进制的 我尝试过高斯模糊 但该方法使我的形状变小 mask ndimag
  • 无法通过模块查看或修改 PYTHONHASHSEED 的值

    试图看到的价值PYTHONHASHSEED https docs python org 3 4 using cmdline html highlight pythonhashseed envvar PYTHONHASHSEED通过使用 th
  • Angular2 和禁用按钮异常

    在我的代码中 我有一个按钮 只要表单无效或不脏 该按钮就会被禁用 I have
  • 如何在VB.net中使用字典?

    我编写了这个函数来自动将字符串数组中的不同值的性别更正为 M 或 F 它工作得很好 但我的经理告诉我使用字典 他说这更有效 但我不知道 有人愿意帮助我了解如何做到这一点吗 谢谢 Public Function AutoGender ByVa
  • 获取任何枚举值的扩展方法

    我一直在尝试创建一个适用于任何枚举的扩展方法 以返回其值 而不是这样做 Enum GetValues typeof BiasCode Cast
  • 与查找数据集连接后进行多列值查找

    我正在使用spark sql 2 4 1v如何根据列的值进行各种连接 我需要获得多个查找值map val给定值列的列 如下所示 样本数据 val data List 20 score school 2018 03 31 14 12 21 s
  • Google Tasks API:403 禁止,超出服务限制

    您好 Google Tasks API 团队 从几天前开始 我们就开始 403 Forbidden 对于我们的许多用户来说 您能检查一下发生了什么事吗 我们的 API 控制台很干净 calls 远低于配额 Caused by com goo
  • 分析 Windbg 中的故障转储

    我正在使用第三方闭源 API 它会抛出一个异常 指出 所有命名管道都忙 我想进一步调试 而不是单步调试 这样我就可以真正了解幕后发生的事情 我使用 WinDbg 转储了这个过程 我现在应该使用什么命令来分析此转储 Thanks 您可以开始执
  • 在联合查询中使用 Wikidata 标签服务

    我想知道是否可以在联合查询中使用维基数据标签服务 例如 以下查询 Query from a local SPARQL enpoint select item itemLabel where SERVICE
  • 如何计算 RectTransform 中的 sizeDelta?

    我编写了自定义布局所需的自定义内容适配程序 所以 我需要控制RectTransform sizeDelta当锚点不同时属性 但我无法显示该值 我不需要Unity3D API参考资料 我读了它 但什么也没得到 因为它只说 此 RectTran
  • minHeight 不适用于 Linearlayout 中的 Weight=“1”

    我想要一个视图 如果屏幕尺寸较小 则可以具有最小高度或wrap content 如果屏幕尺寸较大 则占据其余空间 该视图是其父视图的中间子视图 目前 我正在使用 LinearLayout 的权重 它在大屏幕上工作正常 但在小屏幕上它不显示视
  • java.lang.ClassCastException:java.util.LinkedHashMap无法转换为com.testing.models.Account

    我收到以下错误 java lang ClassCastException java util LinkedHashMap cannot be cast to com testing models Account 用下面的代码 final i
  • ImportError:无法从“tensorflow.python.keras.engine”导入名称“keras_tensor”

    我在加载张量流插件库时收到此错误 import tensorflow addons as tfa ImportError cannot import name keras tensor from tensorflow python kera
  • 是否可以通过 TCP 连接到正在侦听 3G 网络端口的 iPhone?

    我正在开发一个严重依赖 P2P 的应用程序 但我目前没有任何 SIM 卡可供实验 因此我正在 wifi 网络上进行测试 我想知道 3G 网络上的 iPhone 是否可以连接以及是否需要穿越 NAT 设备 您位于提供商的路由器后面 您的 IP
  • EJB3 Glassfish JNDI 查找

    我正在使用 Glassfish 捆绑的 Eclipse IDE 我编写了一个简单的 EJB 应用程序 但它不起作用 Stateless Remote CalculatorRemote class Local CalculatorLocal
  • Bootstrap 下拉菜单切断

    我正在尝试将下拉设置菜单添加到我一直在处理的项目中的评论部分 下拉菜单似乎自行切断 我不知道为什么会这样 I tried overflow visible and z index 999 但它们似乎都不起作用 这是一个基本的评论块 我试图在
  • AEM/CQ 中删除子组件的事件处理程序

    如何为 Adob e AEM6 组件添加在删除子组件时触发的事件处理程序 我可以将事件处理程序附加到多个侦听器 列在cq listeners 的文档 http dev day com docs en cq current developin
  • 使用 Java EE 将文件存储在云中

    我正在使用 CloudBees 部署我的 Java EE 应用程序 因为我需要写入和读取文件 但我找不到 CloudBees 中的任何云文件系统 请向我推荐任何免费的云文件系统存储和用于访问该文件系统的java代码 使用 jclouds 您
  • Django通过最后创建的对象进行反向查询

    我有两个模型 class SomeActivity models Model name models ChartField max length 100 class SomeStatus models Model name models C