【问题标题】:Django sort and regroup multiple fieldsDjango对多个字段进行排序和重组
【发布时间】:2018-08-06 10:07:31
【问题描述】:

我正在尝试重新组合一个字段并在 Django 中对另一个字段进行排序。我的用例不同,但让我们以 Django 重组模板为例。

使用这个数据集。

cities = [
   {'name': 'Mumbai', 'population': '19,000,000', 'country': 'India'},
   {'name': 'Calcutta', 'population': '15,000,000', 'country': 'India'},
   {'name': 'New York', 'population': '20,000,000', 'country': 'USA'},
   {'name': 'Chicago', 'population': '7,000,000', 'country': 'USA'},
   {'name': 'Tokyo', 'population': '33,000,000', 'country': 'Japan'},
]

使用重组标签,这是输出:

  1. 印度
    • 孟买:19,000,000
    • 加尔各答:15,000,000
  2. 美国
    • 纽约:20,000,000
    • 芝加哥:7,000,000
  3. 日本
    • 东京:33,000,000

如何按人口对这些信息进行排序,但仍保持分组?这是我希望看到的预期输出:

  1. 日本
    • 东京:33,000,000
  2. 美国
    • 纽约:20,000,000
    • 芝加哥:7,000,000
  3. 印度
    • 孟买:19,000,000
    • 加尔各答:15,000,000

如何查询数据库以保持 Django 模板中重新排序所需的分组正常工作,同时仍保持人口的排序顺序?这将如何在日期对象而不是 int 上工作?

【问题讨论】:

    标签: python django sorting


    【解决方案1】:

    请注意,{% regroup %} 不会对其输入进行排序!我们的示例依赖于这样一个事实,即城市列表首先是按国家/地区排序的。如果城市列表未按国家/地区对其成员进行排序,则重组将天真地显示单个国家/地区的多个组。

    在您的查询集中定义它:

    def get_queryset(self): qs = self.model.objects.all() qs = qs.order_by('population', '-country') return qs

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多