regroup 模板标签

实例

为每个品牌显示所有带有新标题的汽车:

{% regroup cars by brand as newlist %}

{% for x in newlist %}
  <h1>{{ x.grouper }}</h1>
  {% for y in x.list %}
    <p>{{ y.model }}: {{ y.year }}</p>
  {% endfor %}
{% endfor %}
Run Example »

定义和用法

regroup 标签返回一个按指定值分组的新对象。

结果为每一组分成一个 GroupedResult 对象,使上面示例中的 newlist 对象看起来像这样:

实例

{% 将汽车按品牌重新组合为 newlist %} 的结果:

[
  GroupedResult(
    grouper='Ford',
    list=[
      {
        'brand': 'Ford',
        'model': 'Mustang',
        'year': '1964'
      },
      {
        'brand': 'Ford',
        'model': 'Bronco',
        'year': '1970'
      },
      {
        'brand': 'Ford',
        'model': 'Sierra',
        'year': '1981'
      }
    ]
  ),
  GroupedResult(
    grouper='Volvo',
    list=[
      {
        'brand': 'Volvo',
        'model': 'XC90',
        'year': '2016'
      },
      {
        'brand': 'Volvo',
        'model': 'P1800',
        'year': '1964'
      }
    ]
  )
]

注意:在重新分组之前确保对象排序正确,否则您将得到具有相同 grouper 名称的组。< /p>


语法

{% regroup object by object.property as newname %}

参数

描述说明
object 必须。 您要重新组合的列表或对象
object.property 必须。 您要分组的属性的名称
newname 必须。 返回对象的新名称