【问题标题】:How to get filter result in the order of query list in Django如何在Django中按查询列表的顺序获取过滤结果
【发布时间】:2014-03-11 07:40:59
【问题描述】:

我的 mongodb 中有类似的文档

{'id':1, 'url': www.aaa.com},{'id':3, 'url': www.ccc.com},{'id':2, 'url': www.bbb.com}

Model.Objects.filter(id__in=[1,2,3])

我希望上述 Django 查询的结果为

[Model:aaa.com>,Model:bbb.com>,Model:ccc.com>]

我的意思是,如何在过滤器查询中按照给定列表的顺序获取结果。即 id=1, id=2, id=3

我没有得到总是排序的结果。这只是示例文档。

【问题讨论】:

  • 使用 order_by("id") 不起作用?
  • @GabrielAmram 不,当 id 类似于 "1003nnf",5000eeg" 时,它没有得到所需的结果。这里假设 id 没有顺序。那我是怎么得到它的?

标签: python django mongodb django-models django-filter


【解决方案1】:

默认情况下,查询集不排序,除非您声明order_by。见https://docs.djangoproject.com/en/dev/ref/models/querysets/#queryset-api

试试Model.Objects.filter(id__in=[1,2,3]).order_by("id")

【讨论】:

    【解决方案2】:

    据我所知,内置的order_by 只允许您按表中的列以升序或降序排列。如果您想自定义订单,您需要编写自己的sorting 函数。

    【讨论】:

    • 它可以像列表一样进行排序。但是它不能再次转换为查询集。
    猜你喜欢
    • 2021-11-14
    • 2018-04-22
    • 2013-04-20
    • 2018-07-15
    • 2021-11-24
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2017-02-08
    相关资源
    最近更新 更多