summaryrefslogtreecommitdiffstats
path: root/lib/toaster/toastergui/templatetags/queryset_to_list_filter.py
blob: dfc094b5917fb670d1b7e62d5b30435e057cdc9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from django import template
import json

register = template.Library()

def queryset_to_list(queryset, fields):
    """
    Convert a queryset to a list; fields can be set to a comma-separated
    string of fields for each record included in the resulting list; if
    omitted, all fields are included for each record, e.g.

        {{ queryset | queryset_to_list:"id,name" }}

    will return a list like

        [{'id': 1, 'name': 'foo'}, ...]

    (providing queryset has id and name fields)
    """
    if fields:
        fields_list = [field.strip() for field in fields.split(',')]
        return list(queryset.values(*fields_list))
    else:
        return list(queryset.values())

register.filter('queryset_to_list', queryset_to_list)