【问题标题】:Django QuerySet - Multiple Order By when there is a single field per recordDjango QuerySet - 每条记录有一个字段时的多个排序依据
【发布时间】:2014-06-04 13:52:39
【问题描述】:

我正在访问一个 API,其中字段的数量可以随时更改,但我必须将数据存储并显示为表格。因此,API 中的每条记录都存储为每个字段的一条记录。我的问题是我无法确定如何一次按多列排序。在排序之前将所有数据放入一个二维数组(列表列表)不是一个可行的选择,因为记录的数量可能太大而无法在内存中保存。

我整理了一个简单的例子来解释。如果有人知道如何克服这个问题,或者我可以如何重新设计我的方法,我将不胜感激。

| record_id    | field       | data        |
| 1            | x           | 2           |
| 1            | y           | 1           |
| 1            | z           | 3           |
| 2            | x           | 30          |
| 2            | y           | 42          |
| 2            | z           | 7           |
| 3            | x           | 53          |
| 3            | y           | 2           |
| 3            | z           | 7           |

如果按字段 'z' 然后 'x' 排序(均升序),则记录顺序为 1,2,3

如果按字段 'z' 然后 'y' 排序(均升序),则记录顺序将为 1,3,2

我正在使用 django 中的模型进行存储,并且正在使用 QuerySets 来检索数据。我无法控制我最初从中访问数据的 API 或数据库。

【问题讨论】:

    标签: database django django-queryset


    【解决方案1】:

    经过大量研究后,我意识到我做错了——我现在在 postgres 和 django-hstore 中使用 hstore 字段来利用它,以实现无模式方法。我现在每条原始记录都有一行,并且可以在使用“额外”方法转换必填字段后进行 order_by。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-08
      • 2011-02-08
      • 2016-01-19
      • 2010-11-21
      • 2021-02-11
      • 2020-05-04
      • 1970-01-01
      相关资源
      最近更新 更多