Django对多个字段进行排序和重组

时间:2018-02-26 21:12:58

标签: python django sorting

我正在尝试重组一个字段并在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'},
]

使用regroup标签,这是输出:

  1. 印度
    • 孟买:19,000,000
    • 加尔各答:15,000,000
  2. 美国
    • 纽约:20,000,000
    • 芝加哥:7,000,000
  3. 日本
    • 东京:33,000,000
  4. 我如何按人口对这些信息进行排序,但仍保留分组?这是我希望看到的预期输出:

    1. 日本
      • 东京:33,000,000
    2. 美国
      • 纽约:20,000,000
      • 芝加哥:7,000,000
    3. 印度
      • 孟买:19,000,000
      • 加尔各答:15,000,000
    4. 如何查询数据库以保持Django模板中重新排序所需的分组正常工作但仍保持人口的排序顺序?如何在日期对象而不是int?

      上工作

1 个答案:

答案 0 :(得分:1)

  

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

在您的查询集中定义它:

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