【问题标题】:Ordering query objects in django在 django 中排序查询对象
【发布时间】:2012-02-21 09:55:02
【问题描述】:

我正在尝试以某种父/子方式对查询结果进行排序。我想知道是否有一种简单的方法可以做到这一点。

对象:

Video : [id, parent_id, date]  // where parent_id can be null - meaning it is a 'root' node.

我想要的查询集排序:

Video 1: [123, null, 01/11]
  Video 2: [111, 123, 02/11]
  Video 3: [144, 123, 04/11]

Video 4: [191, null, 03/11]
  Video 5: [118, 191, 03/11]
  Video 6: [121, 191, 05/11]

Video 7: [411, null, 04/11]

...

有没有办法在查询集中实现这种父/子组排序?

【问题讨论】:

  • 您可以通过点表示法获取根节点和访问子节点:video.video_set.all()。还不够吗?

标签: django django-queryset django-aggregation


【解决方案1】:

如果需要在模板级别使用这个,可以使用regroup模板标签对查询集重新排序:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#regroup

{% regroup videos by parent_id as group %}
{% for video in group %}
    {{ video.grouper }}
    {% for child in group.list %}{{ child }}{% endfor %}
{% endfor %}

【讨论】:

    【解决方案2】:

    你需要使用django-mptt,它会为你解决这个问题。

    更多关于 MPTT 的信息来自wikipedia

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      相关资源
      最近更新 更多