按列表中的值对查询集进行排序

2024-04-13

是否可以通过查询中提供的元素列表对 django 查询集进行排序? 例如,如果我这样做

m.objects.filter(id__in=[3,1,8])

我不希望查询集的顺序是 id 3 的元素、id 1 的元素和 id 8 的元素。

Thanks


既然存在Case and When在 Django >= 1.11 中,你可以用一种更像 orm 的方式来实现,保留查询集的所有优点:

from django.db import models

order = ['b', 'a', 'z', 'x', 'c']
_whens = []

for sort_index, value in enumerate(order):
    _whens.append(
        models.When(my_field=value, then=sort_index)
    )

qs = MyModel.objects.annotate(
        _sort_index=models.Case(
            *_whens, 
            output_field=models.IntegerField()
        )
     )

qs.order_by('_sort_index')

这将生成如下内容:

from django.db import models

order = ['b', 'a', 'z', 'x', 'c']
qs = MyModel.objects.annotate(
    _sort_index=models.Case(
        models.When(my_field='b', then=0),
        models.When(my_field='a', then=1),
        models.When(my_field='z', then=2),
        models.When(my_field='x', then=3),
        models.When(my_field='c', then=4),
        output_field=models.IntegerField()
    )
).order_by('_sort_index')

我建议仅将其用于少量列表项,因为它会破坏数据库查询。

https://docs.djangoproject.com/ko/1.11/ref/models/conditional-expressions/#case https://docs.djangoproject.com/ko/1.11/ref/models/conditional-expressions/#case

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

按列表中的值对查询集进行排序 的相关文章

  • 用于渲染 html 子集的 Django templatetag

    我有一些 html 在本例中是通过 TinyMCE 创建的 我想将其添加到页面中 但是 出于安全原因 我不想只打印用户输入的所有内容 有谁知道模板标签 最好是过滤器 只允许呈现 html 的安全子集 我意识到 Markdown 和其他人就是
  • 为什么在访问 Python 对象属性时使用 getattr() 而不是 __dict__ ?

    在具有一定程度的 Python 对象自省的源代码示例和 SO 答案中 常见的模式是 getattr some object attribute name string 是否有理由优先选择这种模式 some object dict attri
  • 雅虎财务请求功能出现 404 客户端错误

    yahoo Financials的请求功能出现404 Client Error 直接点击以下网址没有问题 https finance yahoo com quote AAPL financials p AAPL https finance
  • 类型错误:“datetime.datetime”和“str”的实例之间不支持“>”

    我是 python 日期和时间类型的新手 我有一个日期值 date 2018 11 10 10 55 31 00 00 我需要检查该日期值是否超过 90 天 我试过 from datetime import datetime from da
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • 在linux上安装python ssl模块,无需重新编译

    是否可以在已经安装了 OpenSSL 的 Linux 机器上安装 python 的 SSL 模块 而无需重新编译 python 我希望它就像复制几个文件并将它们包含在库路径中一样简单 Python版本是2 4 3 谢谢 是否可以在已经安装了
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • 使用 subprocess.Popen() 或 subprocess.check_call() 时程序卡住

    我想从 python 运行一个程序并找到它的内存使用情况 为此 我正在使用 l a out lt in txt gt out txt p subprocess Popen l shell False stdout subprocess PI
  • 使用 if 语句的网格网格和用户定义函数的真值不明确

    假设我有一个函数f x y 足够光滑 然而 有些值仅在有限的意义上存在 以sin x x的价值x 0只存在于极限 x gt 0 中 在一般情况下 我用一个来处理这个问题if陈述 如果我在情节中使用它meshgrid我收到一条错误消息 Val
  • 如何手动发送django异常日志?

    我的应用程序中有一个应该返回的特定视图HttpResponse 如果一切都成功完成并且类似HttpResponseBadRequest 否则 此视图适用于外部数据 因此可能会引发一些意外的异常 我当然需要知道发生了什么 所以我有这样的东西
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • Django - 使用“@api_view”将 Django Rest Swagger 架构添加到 DRF 标记函数

    Django 如何将 swagger 自动模式添加到 DRF 标记函数 api view 我有这个功能 view py api view POST swagger auto schema request body PostSerialize
  • 从 wxPython 事件处理程序中调用函数

    我正在努力寻找一种在 wxPython 事件处理函数中使用函数的方法 假设我有一个按钮 单击该按钮时 它会使用事件处理程序运行一个名为 OnRun 的函数 但是 用户忘记单击 OnRun 按钮之前的 RadionButton 我想弹出一个
  • 如何创建用于霍夫曼编码和解码的树?

    对于我的作业 我将对霍夫曼树进行编码和解码 我在创建树时遇到问题 并且陷入困境 不要介意打印语句 它们只是让我测试并查看函数运行时的输出是什么 对于第一个 for 循环 我从主块中用于测试的文本文件中获取了所有值和索引 在第二个 for 循
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • python中有没有一种方法可以将存储在列表中的正则表达式模式列表应用到单个字符串?

    我有一个正则表达式模式列表 存储在列表类型中 我想将其应用于字符串 有谁知道一个好方法 将列表中的每个正则表达式模式应用于字符串 和 如果匹配 则调用与列表中该模式关联的不同函数 如果可能的话我想用 python 来做这件事 提前致谢 im
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import

随机推荐

  • 在 SQL 中比较图像

    与数据库中的图像进行比较的最佳方法是什么 我尝试比较它们 Image 是 Image 类型 Select from Photos where Photo Image 但收到错误 数据类型图像和图像在等于运算符中不兼容 由于图像数据类型是二进
  • 在 Twitter Fabric 中使用自定义登录按钮?

    我一直在尝试使用普通按钮来使用 twitter sdk 执行身份验证过程 但它似乎不起作用 有人尝试过类似的事情吗 我已经正确设置了 API 密钥等 登录过程正确执行 但回调部分似乎没有被调用 我的日志都没有被执行 成功或失败部分都没有 T
  • 具有多个逗号分隔值的返回语句[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 语法 逗号是什么意思 https stackoverflow com questions 3561043 javascript syntax what comma means 这
  • 使用jsPDF在服务器端保存pdf

    我有一个应用程序 可以生成一个 HTML 页面 其中包含用户可以编辑的数据 最后我用 jsPDF 生成了一个 pdf 文件 有什么方法可以将生成的 pdf 保存在服务器端数据库中吗 我正在使用 PrimeFaces 提前致谢 为其他用户更新
  • 如何强制 Typescript 中的所有变量都声明类型

    据我所知 当你在Typescript中声明变量时 你可以选择是否为变量指定类型 如果未指定类型 则使用默认的 any 类型 有没有办法强制所有变量都声明类型 即使它可能是 任何 例如 当未指定类型时 我希望出现编译器错误 这样一来 程序员将
  • 如何使 Django slugify 与 Unicode 字符串正常工作?

    我能做什么来预防slugify过滤器去除非 ASCII 字母数字字符 我使用的是 Django 1 0 2 编程网 http cnprog com有问题的网址中有中文字符 所以我查看了他们的代码 他们没有使用slugify在模板中 相反 他
  • Ace 代码编辑器动态设置语言 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在尝试通过下拉菜单来选择语言来实现 Ace 代码编辑器 我的下拉菜单有一个模式 ID 我已经让编辑器正常工作 但我无法像我希望
  • JNI 和 Java:ant 调用 make 还是 make 调用 ant?

    我即将第一次进入 JNI Java 本机接口 的世界 以提供从平台特定的 C C 代码到 Java 的文件系统更改通知 除非有人推荐一些我错过的出色的图书馆来做这件事 作为 JNI 的新手 我已经设法找到了很多关于 JNI 接口方面和库生成
  • 避免从存储过程返回结果集

    假设我有一些返回结果集的存储过程 并且我无法更改它 create procedure test procedure as begin select 1 end 我知道我可以将结果集插入表中 因此它将对调用代码隐藏 declare t tab
  • Worklight 在线 + 离线身份验证

    我正在尝试通过 Worklight 实现以下目标 我的应用程序有两组功能 仅当应用程序连接到服务器并且用户经过身份验证时才能访问一组功能 另一组功能可以离线访问 但它们需要来自加密 JSONStore 的数据 我在客户端设备上有一个 JSO
  • 距离矩阵的并行构造

    我对大量多维向量进行层次凝聚聚类 我注意到最大的瓶颈是距离矩阵的构造 此任务的简单实现如下 此处使用 Python v an array N d where rows are the observations and columns the
  • 运行 Jest 时 NextJS 中未定义环境变量

    我设置了一个简单的 NextJS 项目 但在让 Jest 识别我的环境变量时遇到问题 我已按照以下说明进行操作https nextjs org docs basic features environment variables test e
  • 微服务版本控制

    就在运行时支持同一服务的多个版本化部署以及消费者如何使用不同版本而言 适应基于微服务的架构中的版本控制的最佳实践是什么 1 如果我们使用基于路由的版本控制作为提到的方法之一here http niels nu blog 2016 micro
  • 选择除第一个之外的所有“tr”

    我怎样才能选择全部tr除第一个元素之外的元素tr在带有 CSS 的表格中 我尝试使用this http www daniel lemire com blog archives 2008 08 22 how to select even or
  • 如何将函数中的多个变量移至全局范围?

    我是Python新手 我正在努力创建一个类似游戏的垄断 并且正在研究程序的设置方面 我有一个函数询问用户他们想要为每个设置输入什么 然后我使用另一个函数将这些设置导入到文本文件中 以便可以存储它们以供以后使用 也可以让程序将它们用作设置 这
  • 如何识别 RDP / MSTSC 登录失败的情况?

    我正在使用 RDP MSTSC 的 C 实现MsRdpClient9NotSafeForScripting 类 https learn microsoft com en us windows win32 termserv imstscaxe
  • 如何决定使用什么——双精度还是小数? [复制]

    这个问题在这里已经有答案了 可能的重复 十进制与双精度 我应该使用哪一种以及何时使用 https stackoverflow com questions 1165761 decimal vs double which one should
  • 如何将列表与 JPA Hibernate 中存在的所有值完全匹配?

    我有一个User实体与skills属性作为类型列表 我想查询的是User表格对照技能列表 如果所有技能都出现在技能列中 则仅找到匹配项 除非没有 我为此使用了 JPQL 但它使用以下命令逐一匹配列表中的每个元素IN clause 用户等级
  • 生成一个sql server表中不存在的随机数

    我正在寻找生成一个随机数 该生成的数字不存在于另一个表上 例如 如果一个表名为randomNums具有价值观10 20 30 40 50 我喜欢生成一个除上述值之外的数字 我尝试了以下查询 Query WITH CTE AS SELECT
  • 按列表中的值对查询集进行排序

    是否可以通过查询中提供的元素列表对 django 查询集进行排序 例如 如果我这样做 m objects filter id in 3 1 8 我不希望查询集的顺序是 id 3 的元素 id 1 的元素和 id 8 的元素 Thanks 既