Tutorials References Exercises Videos Menu
Create Website Get Certified Upgrade

regroup Template Tag


Example

Display all the cars with a new header for each brand:

{% 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 »

Definition and Usage

The regroup tag returns a new object grouped by a specified value.

The result is divided into one GroupedResult object for each group, making the newlist object from the example above, looking like this:

Example

The result from {% regroup cars by brand as 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'
      }
    ]
  )
]

Note: Make sure the object is sorted correctly before regrouping, otherwise you will end up with groups with the same grouper name.


Syntax

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

Parameters

Value Description
object Required. A list or object taht you want to regroup
object.property Required. The name of the property you want to group by
newname Required. A new name for the returned object