Files
dss/core/serialisers/json.py
2013-06-22 17:06:56 +01:00

28 lines
1.0 KiB
Python
Executable File

from django.core.serializers import serialize
from django.utils.simplejson import dumps, loads, JSONEncoder
from django.db.models.query import QuerySet
from django.utils.functional import curry
class DjangoJSONEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, QuerySet):
# `default` must return a python serializable
# structure, the easiest way is to load the JSON
# string produced by `serialize` and return it
return loads(serialize('json', obj, fields=('id', 'name')))
return JSONEncoder.default(self,obj)
# partial function, we can now use dumps(my_dict) instead
# of dumps(my_dict, cls=DjangoJSONEncoder)
dumps = curry(dumps, cls=DjangoJSONEncoder)
def to_ajax(rows, filter_field, slug_field=None):
ret = []
for row in rows:
ret.append(
{'id': row.id,
'text': getattr(row, filter_field),
'slug': getattr(row, slug_field) if slug_field else ''
}
)
return ret