blob: 0dcc7d2714a723ea4bb1cef8f8146e37ddf07802 [file] [log] [blame]
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001from django import template
2import json
3
4register = template.Library()
5
6def objects_to_dictionaries(iterable, fields):
7 """
8 Convert an iterable into a list of dictionaries; fields should be set
9 to a comma-separated string of properties for each item included in the
10 resulting list; e.g. for a queryset:
11
12 {{ queryset | objects_to_dictionaries:"id,name" }}
13
14 will return a list like
15
16 [{'id': 1, 'name': 'foo'}, ...]
17
18 providing queryset has id and name fields
19
20 This is mostly to support serialising querysets or lists of model objects
21 to JSON
22 """
23 objects = []
24
25 if fields:
26 fields_list = [field.strip() for field in fields.split(',')]
27 for item in iterable:
28 out = {}
29 for field in fields_list:
30 out[field] = getattr(item, field)
31 objects.append(out)
32
33 return objects
34
35register.filter('objects_to_dictionaries', objects_to_dictionaries)