diff options
| author | Baptiste Mispelon <bmispelon@gmail.com> | 2016-08-26 11:39:06 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-08-26 16:59:21 -0400 |
| commit | 61b45dff6be3a2c85adac73acf5fe0de71f9ecda (patch) | |
| tree | 861f107b2ff26cee60e1970c320d6d929bc25767 /docs | |
| parent | 7968bb7fada503b79d8b0e8c92aa076d60c17241 (diff) | |
Fixed #27126 -- Made {% regroup %} return a namedtuple to ease unpacking.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/ref/templates/builtins.txt | 25 | ||||
| -rw-r--r-- | docs/releases/1.11.txt | 4 |
2 files changed, 28 insertions, 1 deletions
diff --git a/docs/ref/templates/builtins.txt b/docs/ref/templates/builtins.txt index 1a8fe600ac..9a5bd4abba 100644 --- a/docs/ref/templates/builtins.txt +++ b/docs/ref/templates/builtins.txt @@ -896,13 +896,36 @@ resulting list. Here, we're regrouping the ``cities`` list by the ``country`` attribute and calling the result ``country_list``. ``{% regroup %}`` produces a list (in this case, ``country_list``) of -**group objects**. Each group object has two attributes: +**group objects**. Group objects are instances of +:py:func:`~collections.namedtuple` with two fields: * ``grouper`` -- the item that was grouped by (e.g., the string "India" or "Japan"). * ``list`` -- a list of all items in this group (e.g., a list of all cities with country='India'). +.. versionchanged:: 1.11 + + The group object was changed from a dictionary to a + :py:func:`~collections.namedtuple`. + +Because ``{% regroup %}`` produces :py:func:`~collections.namedtuple` objects, +you can also write the previous example as:: + + {% regroup cities by country as country_list %} + + <ul> + {% for country, local_cities in country_list %} + <li>{{ country }} + <ul> + {% for city in local_cities %} + <li>{{ city.name }}: {{ city.population }}</li> + {% endfor %} + </ul> + </li> + {% endfor %} + </ul> + Note that ``{% regroup %}`` does not order its input! Our example relies on the fact that the ``cities`` list was ordered by ``country`` in the first place. If the ``cities`` list did *not* order its members by ``country``, the diff --git a/docs/releases/1.11.txt b/docs/releases/1.11.txt index c8282f70d6..67c247c86e 100644 --- a/docs/releases/1.11.txt +++ b/docs/releases/1.11.txt @@ -300,6 +300,10 @@ Templates supports context processors by setting the ``'context_processors'`` option in :setting:`OPTIONS <TEMPLATES-OPTIONS>`. +* The :ttag:`regroup` tag now returns ``namedtuple``\s instead of dictionaries + so you can unpack the group object directly in a loop, e.g. + ``{% for grouper, list in regrouped %}``. + Tests ~~~~~ |
