Source code for dal_select2.views

"""Select2 view implementation."""

import json

from dal.views import BaseQuerySetView

from django import http


[docs]class Select2ViewMixin(object): """View mixin to render a JSON response for Select2."""
[docs] def get_results(self, context): """Return data for the 'results' key of the response.""" return [ { 'id': self.get_result_value(result), 'text': self.get_result_label(result), } for result in context['object_list'] ]
[docs] def render_to_response(self, context): """Return a JSON response in Select2 format.""" create_option = [] q = self.request.GET.get('q', None) if self.create_field and q and context['page_obj'].number == 1: create_option = [{ 'id': q, 'text': 'Create "%s"' % q, 'create_id': True, }] return http.HttpResponse( json.dumps({ 'results': self.get_results(context) + create_option, 'pagination': { 'more': self.has_more(context) } }), content_type='application/json', )
[docs]class Select2QuerySetView(Select2ViewMixin, BaseQuerySetView): """List options for a Select2 widget."""