在 django 中排序查询对象

发布于 2024-12-29 17:04:08 字数 462 浏览 3 评论 0原文

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

对象:

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]

...

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

I'm trying to order the results of my query in a sort of parent/child manner. I'm wondering if there's an easy way to accomplish this.

Object:

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

Queryset ordering I want:

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]

...

Is there a way to achieve this sort of parent/ child group ordering in a queryset?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧梦荧光笔 2025-01-05 17:04:08

如果需要在模板级别使用此功能,可以使用 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 %}

If you need to use this at the template level, you can use the regroup template tag to reorder the queryset:

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 %}
我早已燃尽 2025-01-05 17:04:08

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

有关 MPTT 的更多信息,请参见 wikipedia

You need to use django-mptt, which will solve this problem for you.

More information on MPTT from wikipedia

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文