【问题标题】:Django - order byDjango - 按顺序
【发布时间】:2017-12-12 18:09:22
【问题描述】:

我需要对我的对象进行排序以在我的模板中使用它。现在是这样的:

sites = Site.objects.all().order_by('-date', '-group')[:10]

结果例如:

  1. 今天组2
  2. 今天组2
  3. 昨天组2
  4. 昨天组1
  5. 三天前 group2
  6. 四天前 group2

我需要:

  1. 今天组2
  2. 昨天组2
  3. 三天前 group2
  4. 四天前 group2
  5. 今日组1
  6. 昨天组1

我只需要按组排序的 10 个最新网站。 我想在我的模板中使用它(首先是 group2 中的两个站点,接下来是 group 2 或 1 中的 8 个站点)。感谢您的任何建议。

【问题讨论】:

    标签: django


    【解决方案1】:

    您应该先通过group 订购,然后通过date 订购。虽然有几种方法可以做到这一点。

    在模型级别,您可以使用元属性ordering 来实现这一点

    在视图级别,使用查询sites = Site.objects.order_by( '-group','-date')[:10]'

    是的,all() 不需要。

    在模板级别,regroup 模板标签。您需要为您的样本使用嵌套。

    【讨论】:

    • 我不能按组先订购,因为我需要 10 个最新站点(来自两个组)。
    【解决方案2】:

    我是这样做的。它可以正常工作。

    sites = Site.objects.order_by('-date').order_by('-group', '-date')[:10]
    

    这不是个好主意。以下是实现我的目标的正确方法:

    我的看法:

    sites = Site.objects.order_by('-date')[:10]
    

    我的模板:

    {% for site in sites|dictsortreversed:"group_id" %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2018-03-06
      • 2013-10-03
      • 1970-01-01
      • 2019-04-12
      • 2011-04-01
      相关资源
      最近更新 更多