【问题标题】:Can you do conditional order_by/regroup in Django?你能在 Django 中做有条件的 order_by/regroup 吗?
【发布时间】:2011-11-22 01:29:52
【问题描述】:

我有一个模型“状态”,其中包含 project_idtimestamp 字段。 project_id 有时为空,如果状态与项目无关(更具体地说,如果状态发生在我们知道是什么项目导致它之前)。

我想订购一个输出表如下:

  • 将具有相同project_id 的状态组合在一起
  • 不要将 null project_ids 组合在一起
  • 按每个组/单例的最新时间戳对这些组和单例进行排序

这可以吗?我几乎可以通过按时间戳排序,然后使用重组来实现它。这“几乎”是正确的,因为一组相同的 project_id 可以通过干预 null 来拆分。

我很确定它可以在 SQL 中完成 (GROUP BY isnull(experiment_id, -id)),但是 Django 允许吗?

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:

    对于 django 中的聚合,最好使用原始 sql,因为它比生成的 orm sql 快得多。 Raw sql Django docs

    【讨论】:

    • 太棒了,我不知道你能做到。
    猜你喜欢
    • 2014-06-03
    • 2017-10-31
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多