2012-08-31 19:47:08 +00:00
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" / >
2012-10-04 17:53:21 +00:00
< title > django_select2.fields — Django-Select2 3.1.2 documentation< / title >
2012-08-31 19:47:08 +00:00
< link rel = "stylesheet" href = "../../_static/nature.css" type = "text/css" / >
< link rel = "stylesheet" href = "../../_static/pygments.css" type = "text/css" / >
< script type = "text/javascript" >
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../',
2012-10-04 17:53:21 +00:00
VERSION: '3.1.2',
2012-08-31 19:47:08 +00:00
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
< / script >
< script type = "text/javascript" src = "../../_static/jquery.js" > < / script >
< script type = "text/javascript" src = "../../_static/underscore.js" > < / script >
< script type = "text/javascript" src = "../../_static/doctools.js" > < / script >
2012-10-04 17:53:21 +00:00
< link rel = "top" title = "Django-Select2 3.1.2 documentation" href = "../../index.html" / >
2012-08-31 19:47:08 +00:00
< link rel = "up" title = "Module code" href = "../index.html" / >
< / head >
< body >
< div class = "related" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../../genindex.html" title = "General Index"
accesskey="I">index< / a > < / li >
< li class = "right" >
< a href = "../../py-modindex.html" title = "Python Module Index"
>modules< / a > |< / li >
2012-10-04 17:53:21 +00:00
< li > < a href = "../../index.html" > Django-Select2 3.1.2 documentation< / a > » < / li >
2012-08-31 19:47:08 +00:00
< li > < a href = "../index.html" accesskey = "U" > Module code< / a > » < / li >
< / ul >
< / div >
< div class = "document" >
< div class = "documentwrapper" >
< div class = "bodywrapper" >
< div class = "body" >
< h1 > Source code for django_select2.fields< / h1 > < div class = "highlight" > < pre >
< span class = "sd" > " " " < / span >
< span class = "sd" > Contains all the Django fields for Select2.< / span >
< span class = "sd" > " " " < / span >
< span class = "kn" > import< / span > < span class = "nn" > logging< / span >
< span class = "n" > logger< / span > < span class = "o" > =< / span > < span class = "n" > logging< / span > < span class = "o" > .< / span > < span class = "n" > getLogger< / span > < span class = "p" > (< / span > < span class = "n" > __name__< / span > < span class = "p" > )< / span >
< div class = "viewcode-block" id = "AutoViewFieldMixin" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoViewFieldMixin" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > AutoViewFieldMixin< / span > < span class = "p" > (< / span > < span class = "nb" > object< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Registers itself with AutoResponseView.< / span >
< span class = "sd" > All Auto fields must sub-class this mixin, so that they are registered.< / span >
< span class = "sd" > .. warning:: Do not forget to include ``' django_select2.urls' `` in your url conf, else,< / span >
< span class = "sd" > central view used to serve Auto fields won' t be available.< / span >
< span class = "sd" > " " " < / span >
< div class = "viewcode-block" id = "AutoViewFieldMixin.__init__" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoViewFieldMixin.__init__" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Class constructor.< / span >
< span class = "sd" > :param auto_id: The key to use while registering this field. If it is not provided then< / span >
< span class = "sd" > an auto generated key is used.< / span >
< span class = "sd" > .. tip::< / span >
< span class = "sd" > This mixin uses full class name of the field to register itself. This is< / span >
< span class = "sd" > used like key in a :py:obj:`dict` by :py:func:`.util.register_field`.< / span >
< span class = "sd" > If that key already exists then the instance is not registered again. So, eventually< / span >
< span class = "sd" > all instances of an Auto field share one instance to respond to the Ajax queries for< / span >
< span class = "sd" > its fields.< / span >
< span class = "sd" > If for some reason any instance needs to be isolated then ``auto_id`` can be used to< / span >
< span class = "sd" > provide a unique key which has never occured before.< / span >
< span class = "sd" > :type auto_id: :py:obj:`unicode`< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' auto_id' < / span > < span class = "p" > ,< / span > < span class = "s" > u" < / span > < span class = "si" > %s< / span > < span class = "s" > .< / span > < span class = "si" > %s< / span > < span class = "s" > " < / span > < span class = "o" > %< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > __module__< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > __class__< / span > < span class = "o" > .< / span > < span class = "n" > __name__< / span > < span class = "p" > ))< / span >
< span class = "k" > if< / span > < span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > isEnabledFor< / span > < span class = "p" > (< / span > < span class = "n" > logging< / span > < span class = "o" > .< / span > < span class = "n" > INFO< / span > < span class = "p" > ):< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > info< / span > < span class = "p" > (< / span > < span class = "s" > " Registering auto field: < / span > < span class = "si" > %s< / span > < span class = "s" > " < / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > )< / span >
< span class = "kn" > from< / span > < span class = "nn" > .< / span > < span class = "kn" > import< / span > < span class = "n" > util< / span >
< span class = "n" > id_< / span > < span class = "o" > =< / span > < span class = "n" > util< / span > < span class = "o" > .< / span > < span class = "n" > register_field< / span > < span class = "p" > (< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field_id< / span > < span class = "o" > =< / span > < span class = "n" > id_< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > AutoViewFieldMixin< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< / div >
< div class = "viewcode-block" id = "AutoViewFieldMixin.security_check" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoViewFieldMixin.security_check" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > security_check< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > request< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Returns ``False`` if security check fails.< / span >
< span class = "sd" > :param request: The Ajax request object.< / span >
< span class = "sd" > :type request: :py:class:`django.http.HttpRequest`< / span >
2012-09-05 06:46:48 +00:00
< span class = "sd" > :param args: The ``*args`` passed to :py:meth:`django.views.generic.base.View.dispatch`.< / span >
< span class = "sd" > :param kwargs: The ``**kwargs`` passed to :py:meth:`django.views.generic.base.View.dispatch`.< / span >
2012-08-31 19:47:08 +00:00
< span class = "sd" > :return: A boolean value, signalling if check passed or failed.< / span >
< span class = "sd" > :rtype: :py:obj:`bool`< / span >
< span class = "sd" > .. warning:: Sub-classes should override this. You really do not want random people making< / span >
< span class = "sd" > Http reqeusts to your server, be able to get access to sensitive information.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "bp" > True< / span >
< / div >
< div class = "viewcode-block" id = "AutoViewFieldMixin.get_results" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoViewFieldMixin.get_results" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > get_results< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > request< / span > < span class = "p" > ,< / span > < span class = "n" > term< / span > < span class = "p" > ,< / span > < span class = "n" > page< / span > < span class = "p" > ,< / span > < span class = "n" > context< / span > < span class = "p" > ):< / span >
< span class = "s" > " See :py:meth:`.views.Select2View.get_results`." < / span >
< span class = "k" > raise< / span > < span class = "ne" > NotImplementedError< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div > < / div >
< span class = "kn" > import< / span > < span class = "nn" > copy< / span >
< span class = "kn" > from< / span > < span class = "nn" > django< / span > < span class = "kn" > import< / span > < span class = "n" > forms< / span >
2012-09-05 06:46:48 +00:00
< span class = "kn" > from< / span > < span class = "nn" > django.core< / span > < span class = "kn" > import< / span > < span class = "n" > validators< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.core.exceptions< / span > < span class = "kn" > import< / span > < span class = "n" > ValidationError< / span >
2012-08-31 19:47:08 +00:00
< span class = "kn" > from< / span > < span class = "nn" > django.forms.models< / span > < span class = "kn" > import< / span > < span class = "n" > ModelChoiceIterator< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.db.models< / span > < span class = "kn" > import< / span > < span class = "n" > Q< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.utils.translation< / span > < span class = "kn" > import< / span > < span class = "n" > ugettext_lazy< / span > < span class = "k" > as< / span > < span class = "n" > _< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.utils.encoding< / span > < span class = "kn" > import< / span > < span class = "n" > smart_unicode< / span >
< span class = "kn" > from< / span > < span class = "nn" > django.core.validators< / span > < span class = "kn" > import< / span > < span class = "n" > EMPTY_VALUES< / span >
< span class = "kn" > from< / span > < span class = "nn" > .widgets< / span > < span class = "kn" > import< / span > < span class = "n" > Select2Widget< / span > < span class = "p" > ,< / span > < span class = "n" > Select2MultipleWidget< / span > < span class = "p" > ,< / span > \
< span class = "n" > HeavySelect2Widget< / span > < span class = "p" > ,< / span > < span class = "n" > HeavySelect2MultipleWidget< / span > < span class = "p" > ,< / span > < span class = "n" > AutoHeavySelect2Widget< / span > < span class = "p" > ,< / span > \
< span class = "n" > AutoHeavySelect2MultipleWidget< / span >
< span class = "kn" > from< / span > < span class = "nn" > .views< / span > < span class = "kn" > import< / span > < span class = "n" > NO_ERR_RESP< / span >
< span class = "kn" > from< / span > < span class = "nn" > .util< / span > < span class = "kn" > import< / span > < span class = "n" > extract_some_key_val< / span >
< span class = "c" > ### Light general fields ###< / span >
< div class = "viewcode-block" id = "Select2ChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.Select2ChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > Select2ChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > ChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Drop-in Select2 replacement for :py:class:`forms.ChoiceField`.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > Select2Widget< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
< div class = "viewcode-block" id = "Select2MultipleChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.Select2MultipleChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > Select2MultipleChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > MultipleChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Drop-in Select2 replacement for :py:class:`forms.MultipleChoiceField`.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > Select2MultipleWidget< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "c" > ### Model fields related mixins ###< / span >
< / div >
< div class = "viewcode-block" id = "ModelResultJsonMixin" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ModelResultJsonMixin" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > ModelResultJsonMixin< / span > < span class = "p" > (< / span > < span class = "nb" > object< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Makes ``heavy_data.js`` parsable JSON response for queries on its model.< / span >
< span class = "sd" > On query it uses :py:meth:`.prepare_qs_params` to prepare query attributes< / span >
< span class = "sd" > which it then passes to ``self.queryset.filter()`` to get the results.< / span >
< span class = "sd" > It is expected that sub-classes will defined a class field variable< / span >
< span class = "sd" > ``search_fields``, which should be a list of field names to search for.< / span >
< span class = "sd" > " " " < / span >
< div class = "viewcode-block" id = "ModelResultJsonMixin.__init__" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.__init__" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Class constructor.< / span >
< span class = "sd" > :param queryset: This can be passed as kwarg here or defined as field variabel,< / span >
< span class = "sd" > like ``search_fields``.< / span >
< span class = "sd" > :type queryset: :py:class:`django.db.models.query.QuerySet` or None< / span >
< span class = "sd" > :param max_results: Maximum number to results to return per Ajax query.< / span >
< span class = "sd" > :type max_results: :py:obj:`int`< / span >
< span class = "sd" > :param to_field_name: Which field' s value should be returned as result tuple' s< / span >
< span class = "sd" > value. (Default is ``pk``, i.e. the id field of the model)< / span >
< span class = "sd" > :type to_field_name: :py:obj:`str`< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "ow" > is< / span > < span class = "bp" > None< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > has_key< / span > < span class = "p" > (< / span > < span class = "s" > ' queryset' < / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span > < span class = "s" > ' queryset is required.' < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > search_fields< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span > < span class = "s" > ' search_fields is required.' < / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > max_results< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' max_results' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field_name< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' to_field_name' < / span > < span class = "p" > ,< / span > < span class = "s" > ' pk' < / span > < span class = "p" > )< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > ModelResultJsonMixin< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< / div >
< div class = "viewcode-block" id = "ModelResultJsonMixin.label_from_instance" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.label_from_instance" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > label_from_instance< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > obj< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Sub-classes should override this to generate custom label texts for values.< / span >
< span class = "sd" > :param obj: The model object.< / span >
< span class = "sd" > :type obj: :py:class:`django.model.Model`< / span >
< span class = "sd" > :return: The label string.< / span >
< span class = "sd" > :rtype: :py:obj:`unicode`< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "n" > smart_unicode< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > )< / span >
< / div >
< div class = "viewcode-block" id = "ModelResultJsonMixin.prepare_qs_params" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.prepare_qs_params" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > prepare_qs_params< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > request< / span > < span class = "p" > ,< / span > < span class = "n" > search_term< / span > < span class = "p" > ,< / span > < span class = "n" > search_fields< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Prepares queryset parameter to use for searching.< / span >
< span class = "sd" > :param search_term: The search term.< / span >
< span class = "sd" > :type search_term: :py:obj:`str`< / span >
< span class = "sd" > :param search_fields: The list of search fields. This is same as ``self.search_fields``.< / span >
< span class = "sd" > :type search_term: :py:obj:`list`< / span >
< span class = "sd" > :return: A dictionary of parameters to ' or' and ' and' together. The output format should< / span >
< span class = "sd" > be ::< / span >
< span class = "sd" > {< / span >
< span class = "sd" > ' or' : [< / span >
< span class = "sd" > Q(attr11=term11) | Q(attr12=term12) | ...,< / span >
< span class = "sd" > Q(attrN1=termN1) | Q(attrN2=termN2) | ...,< / span >
< span class = "sd" > ...],< / span >
< span class = "sd" > ' and' : {< / span >
< span class = "sd" > ' attrX1' : termX1,< / span >
< span class = "sd" > ' attrX2' : termX2,< / span >
< span class = "sd" > ...< / span >
< span class = "sd" > }< / span >
< span class = "sd" > }< / span >
< span class = "sd" > The above would then be coaxed into ``filter()`` as below::< / span >
< span class = "sd" > queryset.filter(< / span >
< span class = "sd" > Q(attr11=term11) | Q(attr12=term12) | ...,< / span >
< span class = "sd" > Q(attrN1=termN1) | Q(attrN2=termN2) | ...,< / span >
< span class = "sd" > ...,< / span >
< span class = "sd" > attrX1=termX1,< / span >
< span class = "sd" > attrX2=termX2,< / span >
< span class = "sd" > ...< / span >
< span class = "sd" > )< / span >
< span class = "sd" > In this implementation, ``term11, term12, termN1, ...`` etc., all are actually ``search_term``.< / span >
< span class = "sd" > Also then ``and`` part is always empty.< / span >
< span class = "sd" > So, let' s take an example.< / span >
< span class = "sd" > | Assume, ``search_term == ' John' ``< / span >
< span class = "sd" > | ``self.search_fields == [' first_name__icontains' , ' last_name__icontains' ]``< / span >
< span class = "sd" > < / span >
< span class = "sd" > So, the prepared query would be::< / span >
< span class = "sd" > {< / span >
< span class = "sd" > ' or' : [< / span >
< span class = "sd" > Q(first_name__icontains=search_term) | Q(last_name__icontains=search_term)< / span >
< span class = "sd" > ],< / span >
< span class = "sd" > ' and' : {}< / span >
< span class = "sd" > }< / span >
< span class = "sd" > :rtype: :py:obj:`dict`< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > q< / span > < span class = "o" > =< / span > < span class = "bp" > None< / span >
< span class = "k" > for< / span > < span class = "n" > field< / span > < span class = "ow" > in< / span > < span class = "n" > search_fields< / span > < span class = "p" > :< / span >
< span class = "n" > kwargs< / span > < span class = "o" > =< / span > < span class = "p" > {}< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "n" > field< / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > search_term< / span >
< span class = "k" > if< / span > < span class = "n" > q< / span > < span class = "ow" > is< / span > < span class = "bp" > None< / span > < span class = "p" > :< / span >
< span class = "n" > q< / span > < span class = "o" > =< / span > < span class = "n" > Q< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > q< / span > < span class = "o" > =< / span > < span class = "n" > q< / span > < span class = "o" > |< / span > < span class = "n" > Q< / span > < span class = "p" > (< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "p" > {< / span > < span class = "s" > ' or' < / span > < span class = "p" > :< / span > < span class = "p" > [< / span > < span class = "n" > q< / span > < span class = "p" > ],< / span > < span class = "s" > ' and' < / span > < span class = "p" > :< / span > < span class = "p" > {},}< / span >
< / div >
< div class = "viewcode-block" id = "ModelResultJsonMixin.get_results" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ModelResultJsonMixin.get_results" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > get_results< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > request< / span > < span class = "p" > ,< / span > < span class = "n" > term< / span > < span class = "p" > ,< / span > < span class = "n" > page< / span > < span class = "p" > ,< / span > < span class = "n" > context< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > See :py:meth:`.views.Select2View.get_results`.< / span >
< span class = "sd" > This implementation takes care of detecting if more results are available.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > qs< / span > < span class = "o" > =< / span > < span class = "n" > copy< / span > < span class = "o" > .< / span > < span class = "n" > deepcopy< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > queryset< / span > < span class = "p" > )< / span >
< span class = "n" > params< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > prepare_qs_params< / span > < span class = "p" > (< / span > < span class = "n" > request< / span > < span class = "p" > ,< / span > < span class = "n" > term< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > search_fields< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > max_results< / span > < span class = "p" > :< / span >
< span class = "n" > min_< / span > < span class = "o" > =< / span > < span class = "p" > (< / span > < span class = "n" > page< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span > < span class = "o" > *< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > max_results< / span >
< span class = "n" > max_< / span > < span class = "o" > =< / span > < span class = "n" > min_< / span > < span class = "o" > +< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > max_results< / span > < span class = "o" > +< / span > < span class = "mi" > 1< / span > < span class = "c" > # fetching one extra row to check if it has more rows.< / span >
< span class = "n" > res< / span > < span class = "o" > =< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "n" > qs< / span > < span class = "o" > .< / span > < span class = "n" > filter< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > params< / span > < span class = "p" > [< / span > < span class = "s" > ' or' < / span > < span class = "p" > ],< / span > < span class = "o" > **< / span > < span class = "n" > params< / span > < span class = "p" > [< / span > < span class = "s" > ' and' < / span > < span class = "p" > ])[< / span > < span class = "n" > min_< / span > < span class = "p" > :< / span > < span class = "n" > max_< / span > < span class = "p" > ])< / span >
< span class = "n" > has_more< / span > < span class = "o" > =< / span > < span class = "nb" > len< / span > < span class = "p" > (< / span > < span class = "n" > res< / span > < span class = "p" > )< / span > < span class = "o" > ==< / span > < span class = "p" > (< / span > < span class = "n" > max_< / span > < span class = "o" > -< / span > < span class = "n" > min_< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > has_more< / span > < span class = "p" > :< / span >
< span class = "n" > res< / span > < span class = "o" > =< / span > < span class = "n" > res< / span > < span class = "p" > [:< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "p" > ]< / span >
< span class = "k" > else< / span > < span class = "p" > :< / span >
< span class = "n" > res< / span > < span class = "o" > =< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "n" > qs< / span > < span class = "o" > .< / span > < span class = "n" > filter< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > params< / span > < span class = "p" > [< / span > < span class = "s" > ' or' < / span > < span class = "p" > ],< / span > < span class = "o" > **< / span > < span class = "n" > params< / span > < span class = "p" > [< / span > < span class = "s" > ' and' < / span > < span class = "p" > ]))< / span >
< span class = "n" > has_more< / span > < span class = "o" > =< / span > < span class = "bp" > False< / span >
< span class = "n" > res< / span > < span class = "o" > =< / span > < span class = "p" > [< / span > < span class = "p" > (< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > to_field_name< / span > < span class = "p" > ),< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > label_from_instance< / span > < span class = "p" > (< / span > < span class = "n" > obj< / span > < span class = "p" > ),< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > obj< / span > < span class = "ow" > in< / span > < span class = "n" > res< / span > < span class = "p" > ]< / span >
< span class = "k" > return< / span > < span class = "p" > (< / span > < span class = "n" > NO_ERR_RESP< / span > < span class = "p" > ,< / span > < span class = "n" > has_more< / span > < span class = "p" > ,< / span > < span class = "n" > res< / span > < span class = "p" > ,< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div > < / div >
< div class = "viewcode-block" id = "UnhideableQuerysetType" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.UnhideableQuerysetType" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > UnhideableQuerysetType< / span > < span class = "p" > (< / span > < span class = "nb" > type< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > This does some pretty nasty hacky stuff, to make sure users can< / span >
< span class = "sd" > also define ``queryset`` as class-level field variable, instead of< / span >
< span class = "sd" > passing it to constructor.< / span >
< span class = "sd" > " " " < / span >
< span class = "c" > # TODO check for alternatives. Maybe this hack is not necessary.< / span >
< span class = "k" > def< / span > < span class = "nf" > __new__< / span > < span class = "p" > (< / span > < span class = "n" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > bases< / span > < span class = "p" > ,< / span > < span class = "n" > dct< / span > < span class = "p" > ):< / span >
< span class = "n" > _q< / span > < span class = "o" > =< / span > < span class = "n" > dct< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s" > ' queryset' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > _q< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "bp" > None< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > _q< / span > < span class = "p" > ,< / span > < span class = "nb" > property< / span > < span class = "p" > ):< / span >
< span class = "c" > # This hack is needed since users are allowed to< / span >
< span class = "c" > # provide queryset in sub-classes by declaring< / span >
< span class = "c" > # class variable named - queryset, which will< / span >
< span class = "c" > # effectively hide the queryset declared in this< / span >
< span class = "c" > # mixin.< / span >
< span class = "n" > dct< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' queryset' < / span > < span class = "p" > )< / span > < span class = "c" > # Throwing away the sub-class queryset< / span >
< span class = "n" > dct< / span > < span class = "p" > [< / span > < span class = "s" > ' _subclass_queryset' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > _q< / span >
< span class = "k" > return< / span > < span class = "nb" > type< / span > < span class = "o" > .< / span > < span class = "n" > __new__< / span > < span class = "p" > (< / span > < span class = "n" > cls< / span > < span class = "p" > ,< / span > < span class = "n" > name< / span > < span class = "p" > ,< / span > < span class = "n" > bases< / span > < span class = "p" > ,< / span > < span class = "n" > dct< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > __call__< / span > < span class = "p" > (< / span > < span class = "n" > cls< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s" > ' queryset' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > queryset< / span > < span class = "ow" > and< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "n" > cls< / span > < span class = "p" > ,< / span > < span class = "s" > ' _subclass_queryset' < / span > < span class = "p" > ):< / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s" > ' queryset' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "n" > cls< / span > < span class = "p" > ,< / span > < span class = "s" > ' _subclass_queryset' < / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "nb" > type< / span > < span class = "o" > .< / span > < span class = "n" > __call__< / span > < span class = "p" > (< / span > < span class = "n" > cls< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
< div class = "viewcode-block" id = "ChoiceMixin" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ChoiceMixin" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > ChoiceMixin< / span > < span class = "p" > (< / span > < span class = "nb" > object< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Simple mixin which provides a property -- ``choices``. When ``choices`` is set,< / span >
< span class = "sd" > then it sets that value to ``self.widget.choices`` too.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > def< / span > < span class = "nf" > _get_choices< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' _choices' < / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _choices< / span >
2012-09-05 06:46:48 +00:00
< span class = "k" > return< / span > < span class = "p" > []< / span >
2012-08-31 19:47:08 +00:00
< span class = "k" > def< / span > < span class = "nf" > _set_choices< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "c" > # Setting choices also sets the choices on the widget.< / span >
< span class = "c" > # choices can be any iterable, but we call list() on it because< / span >
< span class = "c" > # it will be consumed more than once.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _choices< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > widget< / span > < span class = "o" > .< / span > < span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "nb" > list< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "nb" > property< / span > < span class = "p" > (< / span > < span class = "n" > _get_choices< / span > < span class = "p" > ,< / span > < span class = "n" > _set_choices< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
< span class = "k" > def< / span > < span class = "nf" > __deepcopy__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > memo< / span > < span class = "p" > ):< / span >
< span class = "n" > result< / span > < span class = "o" > =< / span > < span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > ChoiceMixin< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __deepcopy__< / span > < span class = "p" > (< / span > < span class = "n" > memo< / span > < span class = "p" > )< / span >
< span class = "n" > result< / span > < span class = "o" > .< / span > < span class = "n" > _choices< / span > < span class = "o" > =< / span > < span class = "n" > copy< / span > < span class = "o" > .< / span > < span class = "n" > deepcopy< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _choices< / span > < span class = "p" > ,< / span > < span class = "n" > memo< / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "n" > result< / span >
2012-08-31 19:47:08 +00:00
< / div >
< div class = "viewcode-block" id = "QuerysetChoiceMixin" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.QuerysetChoiceMixin" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > QuerysetChoiceMixin< / span > < span class = "p" > (< / span > < span class = "n" > ChoiceMixin< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Overrides ``choices``' getter to return instance of :py:class:`.ModelChoiceIterator`< / span >
< span class = "sd" > instead.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > def< / span > < span class = "nf" > _get_choices< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "c" > # If self._choices is set, then somebody must have manually set< / span >
< span class = "c" > # the property self.choices. In this case, just return self._choices.< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' _choices' < / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _choices< / span >
< span class = "c" > # Otherwise, execute the QuerySet in self.queryset to determine the< / span >
< span class = "c" > # choices dynamically. Return a fresh ModelChoiceIterator that has not been< / span >
< span class = "c" > # consumed. Note that we' re instantiating a new ModelChoiceIterator *each*< / span >
< span class = "c" > # time _get_choices() is called (and, thus, each time self.choices is< / span >
< span class = "c" > # accessed) so that we can ensure the QuerySet has not been consumed. This< / span >
< span class = "c" > # construct might look complicated but it allows for lazy evaluation of< / span >
< span class = "c" > # the queryset.< / span >
< span class = "k" > return< / span > < span class = "n" > ModelChoiceIterator< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span >
< span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "nb" > property< / span > < span class = "p" > (< / span > < span class = "n" > _get_choices< / span > < span class = "p" > ,< / span > < span class = "n" > ChoiceMixin< / span > < span class = "o" > .< / span > < span class = "n" > _set_choices< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
< span class = "k" > class< / span > < span class = "nc" > ModelChoiceFieldMixin< / span > < span class = "p" > (< / span > < span class = "nb" > object< / span > < span class = "p" > ):< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' queryset' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span >
< span class = "n" > kargs< / span > < span class = "o" > =< / span > < span class = "n" > extract_some_key_val< / span > < span class = "p" > (< / span > < span class = "n" > kwargs< / span > < span class = "p" > ,< / span > < span class = "p" > [< / span >
< span class = "s" > ' empty_label' < / span > < span class = "p" > ,< / span > < span class = "s" > ' cache_choices' < / span > < span class = "p" > ,< / span > < span class = "s" > ' required' < / span > < span class = "p" > ,< / span > < span class = "s" > ' label' < / span > < span class = "p" > ,< / span > < span class = "s" > ' initial' < / span > < span class = "p" > ,< / span > < span class = "s" > ' help_text' < / span > < span class = "p" > ,< / span >
< span class = "p" > ])< / span >
< span class = "n" > kargs< / span > < span class = "p" > [< / span > < span class = "s" > ' widget' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' widget' < / span > < span class = "p" > ,< / span > < span class = "nb" > getattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' widget' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > ))< / span >
< span class = "n" > kargs< / span > < span class = "p" > [< / span > < span class = "s" > ' to_field_name' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' to_field_name' < / span > < span class = "p" > ,< / span > < span class = "s" > ' pk' < / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' _choices' < / span > < span class = "p" > ):< / span > < span class = "c" > # If it exists then probably it is set by HeavySelect2FieldBase.< / span >
< span class = "c" > # We are not gonna use that anyway.< / span >
< span class = "k" > del< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _choices< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > ModelChoiceFieldMixin< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "n" > queryset< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kargs< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' set_placeholder' < / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > widget< / span > < span class = "o" > .< / span > < span class = "n" > set_placeholder< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > empty_label< / span > < span class = "p" > )< / span >
< span class = "k" > def< / span > < span class = "nf" > _get_queryset< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' _queryset' < / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > _queryset< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "c" > ### Slightly altered versions of the Django counterparts with the same name in forms module. ###< / span >
< span class = "k" > class< / span > < span class = "nc" > ModelChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > ModelChoiceFieldMixin< / span > < span class = "p" > ,< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > ModelChoiceField< / span > < span class = "p" > ):< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "nb" > property< / span > < span class = "p" > (< / span > < span class = "n" > ModelChoiceFieldMixin< / span > < span class = "o" > .< / span > < span class = "n" > _get_queryset< / span > < span class = "p" > ,< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > ModelChoiceField< / span > < span class = "o" > .< / span > < span class = "n" > _set_queryset< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "k" > class< / span > < span class = "nc" > ModelMultipleChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > ModelChoiceFieldMixin< / span > < span class = "p" > ,< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > ModelMultipleChoiceField< / span > < span class = "p" > ):< / span >
< span class = "n" > queryset< / span > < span class = "o" > =< / span > < span class = "nb" > property< / span > < span class = "p" > (< / span > < span class = "n" > ModelChoiceFieldMixin< / span > < span class = "o" > .< / span > < span class = "n" > _get_queryset< / span > < span class = "p" > ,< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > ModelMultipleChoiceField< / span > < span class = "o" > .< / span > < span class = "n" > _set_queryset< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "c" > ### Light Fileds specialized for Models ###< / span >
< div class = "viewcode-block" id = "ModelSelect2Field" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ModelSelect2Field" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > ModelSelect2Field< / span > < span class = "p" > (< / span > < span class = "n" > ModelChoiceField< / span > < span class = "p" > )< / span > < span class = "p" > :< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Light Select2 field, specialized for Models.< / span >
< span class = "sd" > Select2 replacement for :py:class:`forms.ModelChoiceField`.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > Select2Widget< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
< div class = "viewcode-block" id = "ModelSelect2MultipleField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.ModelSelect2MultipleField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > ModelSelect2MultipleField< / span > < span class = "p" > (< / span > < span class = "n" > ModelMultipleChoiceField< / span > < span class = "p" > )< / span > < span class = "p" > :< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Light multiple-value Select2 field, specialized for Models.< / span >
< span class = "sd" > Select2 replacement for :py:class:`forms.ModelMultipleChoiceField`.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > Select2MultipleWidget< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "c" > ### Heavy fields ###< / span >
< / div >
2012-09-05 06:46:48 +00:00
< div class = "viewcode-block" id = "HeavySelect2FieldBaseMixin" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavySelect2FieldBaseMixin" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > HeavySelect2FieldBaseMixin< / span > < span class = "p" > (< / span > < span class = "nb" > object< / span > < span class = "p" > ):< / span >
2012-08-31 19:47:08 +00:00
< span class = "sd" > " " " < / span >
2012-09-05 06:46:48 +00:00
< span class = "sd" > Base mixin field for all Heavy fields.< / span >
< span class = "sd" > .. note:: Although Heavy fields accept ``choices`` parameter like all Django choice fields, but these< / span >
< span class = "sd" > fields are backed by big data sources, so ``choices`` cannot possibly have all the values.< / span >
< span class = "sd" > For Heavies, consider ``choices`` to be a subset of all possible choices. It is available because users< / span >
< span class = "sd" > might expect it to be available.< / span >
2012-08-31 19:47:08 +00:00
< span class = "sd" > " " " < / span >
2012-09-05 06:46:48 +00:00
< div class = "viewcode-block" id = "HeavySelect2FieldBaseMixin.__init__" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavySelect2FieldBaseMixin.__init__" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
2012-08-31 19:47:08 +00:00
< span class = "sd" > " " " < / span >
< span class = "sd" > Class constructor.< / span >
< span class = "sd" > :param data_view: A :py:class:`~.views.Select2View` sub-class which can respond to this widget' s Ajax queries.< / span >
2012-09-05 06:46:48 +00:00
< span class = "sd" > :type data_view: :py:class:`django.views.generic.base.View` or None< / span >
2012-08-31 19:47:08 +00:00
< span class = "sd" > :param widget: A widget instance.< / span >
< span class = "sd" > :type widget: :py:class:`django.forms.widgets.Widget` or None< / span >
< span class = "sd" > .. warning:: Either of ``data_view`` or ``widget`` must be specified, else :py:exc:`ValueError` would< / span >
< span class = "sd" > be raised.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > data_view< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' data_view' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span >
< span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' choices' < / span > < span class = "p" > ,< / span > < span class = "p" > [])< / span >
< span class = "n" > kargs< / span > < span class = "o" > =< / span > < span class = "p" > {}< / span >
< span class = "k" > if< / span > < span class = "n" > data_view< / span > < span class = "ow" > is< / span > < span class = "ow" > not< / span > < span class = "bp" > None< / span > < span class = "p" > :< / span >
< span class = "n" > kargs< / span > < span class = "p" > [< / span > < span class = "s" > ' widget' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > widget< / span > < span class = "p" > (< / span > < span class = "n" > data_view< / span > < span class = "o" > =< / span > < span class = "n" > data_view< / span > < span class = "p" > )< / span >
< span class = "k" > elif< / span > < span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > get< / span > < span class = "p" > (< / span > < span class = "s" > ' widget' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span > < span class = "ow" > is< / span > < span class = "bp" > None< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "ne" > ValueError< / span > < span class = "p" > (< / span > < span class = "s" > ' data_view is required else you need to provide your own widget instance.' < / span > < span class = "p" > )< / span >
< span class = "n" > kargs< / span > < span class = "o" > .< / span > < span class = "n" > update< / span > < span class = "p" > (< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > HeavySelect2FieldBaseMixin< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kargs< / span > < span class = "p" > )< / span >
2012-08-31 19:47:08 +00:00
< span class = "c" > # By this time self.widget would have been instantiated.< / span >
< span class = "c" > # This piece of code is needed here since (God knows why) Django' s Field class does not call< / span >
< span class = "c" > # super(); because of that __init__() of classes would get called after Field.__init__().< / span >
< span class = "c" > # If did had super() call there then we could have simply moved AutoViewFieldMixin at the< / span >
< span class = "c" > # end of the MRO list. This way it would have got widget instance instead of class and it< / span >
< span class = "c" > # could have directly set field_id on it.< / span >
< span class = "k" > if< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' field_id' < / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > widget< / span > < span class = "o" > .< / span > < span class = "n" > field_id< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > field_id< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > choices< / span > < span class = "ow" > and< / span > < span class = "nb" > hasattr< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "s" > ' choices' < / span > < span class = "p" > ):< / span > < span class = "c" > # ModelChoiceField will set this to ModelChoiceIterator< / span >
< span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > choices< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > choices< / span > < span class = "o" > =< / span > < span class = "n" > choices< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div > < / div >
2012-09-05 06:46:48 +00:00
< div class = "viewcode-block" id = "HeavyChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavyChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > HeavyChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > ChoiceMixin< / span > < span class = "p" > ,< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > Field< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Reimplements :py:class:`django.forms.TypedChoiceField` in a way which suites the use of big data.< / span >
< span class = "sd" > .. note:: Although this field accepts ``choices`` parameter like all Django choice fields, but these< / span >
< span class = "sd" > fields are backed by big data sources, so ``choices`` cannot possibly have all the values. It is meant< / span >
< span class = "sd" > to be a subset of all possible choices.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > default_error_messages< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s" > ' invalid_choice' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s" > u' Select a valid choice. < / span > < span class = "si" > %(value)s< / span > < span class = "s" > is not one of the available choices.' < / span > < span class = "p" > ),< / span >
< span class = "p" > }< / span >
< span class = "n" > empty_value< / span > < span class = "o" > =< / span > < span class = "s" > u' ' < / span >
< span class = "s" > " Sub-classes can set this other value if needed." < / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > HeavyChoiceField< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< span class = "c" > # Widget should have been instantiated by now.< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > widget< / span > < span class = "o" > .< / span > < span class = "n" > field< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span >
< span class = "k" > def< / span > < span class = "nf" > to_python< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "n" > value< / span > < span class = "o" > ==< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > empty_value< / span > < span class = "ow" > or< / span > < span class = "n" > value< / span > < span class = "ow" > in< / span > < span class = "n" > validators< / span > < span class = "o" > .< / span > < span class = "n" > EMPTY_VALUES< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > empty_value< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > value< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > coerce_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "p" > (< / span > < span class = "ne" > ValueError< / span > < span class = "p" > ,< / span > < span class = "ne" > TypeError< / span > < span class = "p" > ,< / span > < span class = "n" > ValidationError< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s" > ' invalid_choice' < / span > < span class = "p" > ]< / span > < span class = "o" > %< / span > < span class = "p" > {< / span > < span class = "s" > ' value' < / span > < span class = "p" > :< / span > < span class = "n" > value< / span > < span class = "p" > })< / span >
< span class = "k" > return< / span > < span class = "n" > value< / span >
< span class = "k" > def< / span > < span class = "nf" > validate< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > HeavyChoiceField< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > validate< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "n" > value< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > valid_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s" > ' invalid_choice' < / span > < span class = "p" > ]< / span > < span class = "o" > %< / span > < span class = "p" > {< / span > < span class = "s" > ' value' < / span > < span class = "p" > :< / span > < span class = "n" > value< / span > < span class = "p" > })< / span >
< span class = "k" > def< / span > < span class = "nf" > valid_value< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "n" > uvalue< / span > < span class = "o" > =< / span > < span class = "n" > smart_unicode< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > for< / span > < span class = "n" > k< / span > < span class = "p" > ,< / span > < span class = "n" > v< / span > < span class = "ow" > in< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > choices< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "n" > uvalue< / span > < span class = "o" > ==< / span > < span class = "n" > smart_unicode< / span > < span class = "p" > (< / span > < span class = "n" > k< / span > < span class = "p" > ):< / span >
< span class = "k" > return< / span > < span class = "bp" > True< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > validate_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< div class = "viewcode-block" id = "HeavyChoiceField.coerce_value" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavyChoiceField.coerce_value" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > coerce_value< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Coerces ``value`` to a Python data type.< / span >
< span class = "sd" > Sub-classes should override this if they do not want unicode values.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "n" > smart_unicode< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< / div >
< div class = "viewcode-block" id = "HeavyChoiceField.validate_value" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavyChoiceField.validate_value" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > validate_value< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Sub-classes can override this to validate the value entered against the big data.< / span >
< span class = "sd" > :param value: Value entered by the user.< / span >
< span class = "sd" > :type value: As coerced by :py:meth:`.coerce_value`.< / span >
< span class = "sd" > :return: ``True`` means the ``value`` is valid.< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "bp" > True< / span >
< / div >
< span class = "k" > def< / span > < span class = "nf" > _get_val_txt< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > try< / span > < span class = "p" > :< / span >
< span class = "n" > value< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > coerce_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > validate_value< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< span class = "k" > except< / span > < span class = "ne" > Exception< / span > < span class = "p" > ,< / span > < span class = "n" > e< / span > < span class = "p" > :< / span >
< span class = "n" > logger< / span > < span class = "o" > .< / span > < span class = "n" > exception< / span > < span class = "p" > (< / span > < span class = "s" > " Exception while trying to get label for value" < / span > < span class = "p" > )< / span >
< span class = "k" > return< / span > < span class = "bp" > None< / span >
< span class = "k" > return< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > get_val_txt< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > )< / span >
< div class = "viewcode-block" id = "HeavyChoiceField.get_val_txt" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavyChoiceField.get_val_txt" > [docs]< / a > < span class = "k" > def< / span > < span class = "nf" > get_val_txt< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > If Heavy widgets encounter any value which it can' t find in ``choices`` then it calls< / span >
< span class = "sd" > this method to get the label for the value.< / span >
< span class = "sd" > :param value: Value entered by the user.< / span >
< span class = "sd" > :type value: As coerced by :py:meth:`.coerce_value`.< / span >
< span class = "sd" > :return: The label for this value.< / span >
< span class = "sd" > :rtype: :py:obj:`unicode` or None (when no possible label could be found)< / span >
< span class = "sd" > " " " < / span >
< span class = "k" > return< / span > < span class = "bp" > None< / span >
< / div > < / div >
< div class = "viewcode-block" id = "HeavyMultipleChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavyMultipleChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > HeavyMultipleChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > HeavyChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Reimplements :py:class:`django.forms.TypedMultipleChoiceField` in a way which suites the use of big data.< / span >
< span class = "sd" > .. note:: Although this field accepts ``choices`` parameter like all Django choice fields, but these< / span >
< span class = "sd" > fields are backed by big data sources, so ``choices`` cannot possibly have all the values. It is meant< / span >
< span class = "sd" > to be a subset of all possible choices.< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > hidden_widget< / span > < span class = "o" > =< / span > < span class = "n" > forms< / span > < span class = "o" > .< / span > < span class = "n" > MultipleHiddenInput< / span >
< span class = "n" > default_error_messages< / span > < span class = "o" > =< / span > < span class = "p" > {< / span >
< span class = "s" > ' invalid_choice' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s" > u' Select a valid choice. < / span > < span class = "si" > %(value)s< / span > < span class = "s" > is not one of the available choices.' < / span > < span class = "p" > ),< / span >
< span class = "s" > ' invalid_list' < / span > < span class = "p" > :< / span > < span class = "n" > _< / span > < span class = "p" > (< / span > < span class = "s" > u' Enter a list of values.' < / span > < span class = "p" > ),< / span >
< span class = "p" > }< / span >
< span class = "k" > def< / span > < span class = "nf" > to_python< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > return< / span > < span class = "p" > []< / span >
< span class = "k" > elif< / span > < span class = "ow" > not< / span > < span class = "nb" > isinstance< / span > < span class = "p" > (< / span > < span class = "n" > value< / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "nb" > list< / span > < span class = "p" > ,< / span > < span class = "nb" > tuple< / span > < span class = "p" > )):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s" > ' invalid_list' < / span > < span class = "p" > ])< / span >
< span class = "k" > return< / span > < span class = "p" > [< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > coerce_value< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > )< / span > < span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "n" > value< / span > < span class = "p" > ]< / span >
< span class = "k" > def< / span > < span class = "nf" > validate< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "n" > value< / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > required< / span > < span class = "ow" > and< / span > < span class = "ow" > not< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s" > ' required' < / span > < span class = "p" > ])< / span >
< span class = "c" > # Validate that each value in the value list is in self.choices or< / span >
< span class = "c" > # the big data (i.e. validate_value() returns True).< / span >
< span class = "k" > for< / span > < span class = "n" > val< / span > < span class = "ow" > in< / span > < span class = "n" > value< / span > < span class = "p" > :< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > valid_value< / span > < span class = "p" > (< / span > < span class = "n" > val< / span > < span class = "p" > ):< / span >
< span class = "k" > raise< / span > < span class = "n" > ValidationError< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > error_messages< / span > < span class = "p" > [< / span > < span class = "s" > ' invalid_choice' < / span > < span class = "p" > ]< / span > < span class = "o" > %< / span > < span class = "p" > {< / span > < span class = "s" > ' value' < / span > < span class = "p" > :< / span > < span class = "n" > val< / span > < span class = "p" > })< / span >
< / div >
< div class = "viewcode-block" id = "HeavySelect2ChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavySelect2ChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > HeavySelect2ChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > HeavySelect2FieldBaseMixin< / span > < span class = "p" > ,< / span > < span class = "n" > HeavyChoiceField< / span > < span class = "p" > ):< / span >
2012-08-31 19:47:08 +00:00
< span class = "s" > " Heavy Select2 Choice field." < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > HeavySelect2Widget< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
2012-09-05 06:46:48 +00:00
< div class = "viewcode-block" id = "HeavySelect2MultipleChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavySelect2MultipleChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > HeavySelect2MultipleChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > HeavySelect2FieldBaseMixin< / span > < span class = "p" > ,< / span > < span class = "n" > HeavyMultipleChoiceField< / span > < span class = "p" > ):< / span >
2012-08-31 19:47:08 +00:00
< span class = "s" > " Heavy Select2 Multiple Choice field." < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > HeavySelect2MultipleWidget< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "c" > ### Heavy field specialized for Models ###< / span >
< / div >
2012-09-05 06:46:48 +00:00
< div class = "viewcode-block" id = "HeavyModelSelect2ChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavyModelSelect2ChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > HeavyModelSelect2ChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > HeavySelect2FieldBaseMixin< / span > < span class = "p" > ,< / span > < span class = "n" > ModelChoiceField< / span > < span class = "p" > ):< / span >
2012-08-31 19:47:08 +00:00
< span class = "s" > " Heavy Select2 Choice field, specialized for Models." < / span >
2012-09-05 06:46:48 +00:00
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > HeavySelect2Widget< / span >
2012-08-31 19:47:08 +00:00
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' choices' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > HeavyModelSelect2ChoiceField< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
2012-09-05 06:46:48 +00:00
< div class = "viewcode-block" id = "HeavyModelSelect2MultipleChoiceField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.HeavyModelSelect2MultipleChoiceField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > HeavyModelSelect2MultipleChoiceField< / span > < span class = "p" > (< / span > < span class = "n" > HeavySelect2FieldBaseMixin< / span > < span class = "p" > ,< / span > < span class = "n" > ModelMultipleChoiceField< / span > < span class = "p" > ):< / span >
2012-08-31 19:47:08 +00:00
< span class = "s" > " Heavy Select2 Multiple Choice field, specialized for Models." < / span >
2012-09-05 06:46:48 +00:00
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > HeavySelect2MultipleWidget< / span >
2012-08-31 19:47:08 +00:00
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "n" > kwargs< / span > < span class = "o" > .< / span > < span class = "n" > pop< / span > < span class = "p" > (< / span > < span class = "s" > ' choices' < / span > < span class = "p" > ,< / span > < span class = "bp" > None< / span > < span class = "p" > )< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > HeavyModelSelect2MultipleChoiceField< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "c" > ### Heavy general field that uses central AutoView ###< / span >
< / div >
< div class = "viewcode-block" id = "AutoSelect2Field" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoSelect2Field" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > AutoSelect2Field< / span > < span class = "p" > (< / span > < span class = "n" > AutoViewFieldMixin< / span > < span class = "p" > ,< / span > < span class = "n" > HeavySelect2ChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Auto Heavy Select2 field.< / span >
< span class = "sd" > This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming< / span >
< span class = "sd" > json query requests for that type (class).< / span >
2012-09-05 06:46:48 +00:00
< span class = "sd" > .. warning:: :py:exc:`NotImplementedError` would be thrown if :py:meth:`get_results` is not implemented.< / span >
2012-08-31 19:47:08 +00:00
< span class = "sd" > " " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > AutoHeavySelect2Widget< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span > < span class = "o" > =< / span > < span class = "s" > " django_select2_central_json" < / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s" > ' data_view' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > AutoSelect2Field< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
< div class = "viewcode-block" id = "AutoSelect2MultipleField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoSelect2MultipleField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > AutoSelect2MultipleField< / span > < span class = "p" > (< / span > < span class = "n" > AutoViewFieldMixin< / span > < span class = "p" > ,< / span > < span class = "n" > HeavySelect2MultipleChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Auto Heavy Select2 field for multiple choices.< / span >
< span class = "sd" > This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming< / span >
< span class = "sd" > json query requests for that type (class).< / span >
2012-09-05 06:46:48 +00:00
< span class = "sd" > .. warning:: :py:exc:`NotImplementedError` would be thrown if :py:meth:`get_results` is not implemented.< / span >
2012-08-31 19:47:08 +00:00
< span class = "sd" > " " " < / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > AutoHeavySelect2MultipleWidget< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span > < span class = "o" > =< / span > < span class = "s" > " django_select2_central_json" < / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s" > ' data_view' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > AutoSelect2MultipleField< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< span class = "c" > ### Heavy field, specialized for Model, that uses central AutoView ###< / span >
< / div >
< div class = "viewcode-block" id = "AutoModelSelect2Field" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoModelSelect2Field" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > AutoModelSelect2Field< / span > < span class = "p" > (< / span > < span class = "n" > ModelResultJsonMixin< / span > < span class = "p" > ,< / span > < span class = "n" > AutoViewFieldMixin< / span > < span class = "p" > ,< / span > < span class = "n" > HeavyModelSelect2ChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Auto Heavy Select2 field, specialized for Models.< / span >
< span class = "sd" > This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming< / span >
< span class = "sd" > json query requests for that type (class).< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > __metaclass__< / span > < span class = "o" > =< / span > < span class = "n" > UnhideableQuerysetType< / span > < span class = "c" > # Makes sure that user defined queryset class variable is replaced by< / span >
< span class = "c" > # queryset property (as it is needed by super classes).< / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > AutoHeavySelect2Widget< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span > < span class = "o" > =< / span > < span class = "s" > " django_select2_central_json" < / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s" > ' data_view' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > AutoModelSelect2Field< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
2012-09-05 06:46:48 +00:00
2012-08-31 19:47:08 +00:00
< / div >
< div class = "viewcode-block" id = "AutoModelSelect2MultipleField" > < a class = "viewcode-back" href = "../../ref_fields.html#django_select2.fields.AutoModelSelect2MultipleField" > [docs]< / a > < span class = "k" > class< / span > < span class = "nc" > AutoModelSelect2MultipleField< / span > < span class = "p" > (< / span > < span class = "n" > ModelResultJsonMixin< / span > < span class = "p" > ,< / span > < span class = "n" > AutoViewFieldMixin< / span > < span class = "p" > ,< / span > < span class = "n" > HeavyModelSelect2MultipleChoiceField< / span > < span class = "p" > ):< / span >
< span class = "sd" > " " " < / span >
< span class = "sd" > Auto Heavy Select2 field for multiple choices, specialized for Models.< / span >
< span class = "sd" > This needs to be subclassed. The first instance of a class (sub-class) is used to serve all incoming< / span >
< span class = "sd" > json query requests for that type (class).< / span >
< span class = "sd" > " " " < / span >
< span class = "n" > __metaclass__< / span > < span class = "o" > =< / span > < span class = "n" > UnhideableQuerysetType< / span > < span class = "c" > # Makes sure that user defined queryset class variable is replaced by< / span >
< span class = "c" > # queryset property (as it is needed by super classes).< / span >
< span class = "n" > widget< / span > < span class = "o" > =< / span > < span class = "n" > AutoHeavySelect2MultipleWidget< / span >
< span class = "k" > def< / span > < span class = "nf" > __init__< / span > < span class = "p" > (< / span > < span class = "bp" > self< / span > < span class = "p" > ,< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > ):< / span >
< span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span > < span class = "o" > =< / span > < span class = "s" > " django_select2_central_json" < / span >
< span class = "n" > kwargs< / span > < span class = "p" > [< / span > < span class = "s" > ' data_view' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "bp" > self< / span > < span class = "o" > .< / span > < span class = "n" > data_view< / span >
< span class = "nb" > super< / span > < span class = "p" > (< / span > < span class = "n" > AutoModelSelect2MultipleField< / span > < span class = "p" > ,< / span > < span class = "bp" > self< / span > < span class = "p" > )< / span > < span class = "o" > .< / span > < span class = "n" > __init__< / span > < span class = "p" > (< / span > < span class = "o" > *< / span > < span class = "n" > args< / span > < span class = "p" > ,< / span > < span class = "o" > **< / span > < span class = "n" > kwargs< / span > < span class = "p" > )< / span >
< / pre > < / div > < / div >
< / div >
< / div >
< / div >
< div class = "sphinxsidebar" >
< div class = "sphinxsidebarwrapper" >
< div id = "searchbox" style = "display: none" >
< h3 > Quick search< / h3 >
< form class = "search" action = "../../search.html" method = "get" >
< input type = "text" name = "q" / >
< input type = "submit" value = "Go" / >
< input type = "hidden" name = "check_keywords" value = "yes" / >
< input type = "hidden" name = "area" value = "default" / >
< / form >
< p class = "searchtip" style = "font-size: 90%" >
Enter search terms or a module, class or function name.
< / p >
< / div >
< script type = "text/javascript" > $ ( '#searchbox' ) . show ( 0 ) ; < / script >
< / div >
< / div >
< div class = "clearer" > < / div >
< / div >
< div class = "related" >
< h3 > Navigation< / h3 >
< ul >
< li class = "right" style = "margin-right: 10px" >
< a href = "../../genindex.html" title = "General Index"
>index< / a > < / li >
< li class = "right" >
< a href = "../../py-modindex.html" title = "Python Module Index"
>modules< / a > |< / li >
2012-10-04 17:53:21 +00:00
< li > < a href = "../../index.html" > Django-Select2 3.1.2 documentation< / a > » < / li >
2012-08-31 19:47:08 +00:00
< li > < a href = "../index.html" > Module code< / a > » < / li >
< / ul >
< / div >
< div class = "footer" >
© Copyright 2012, Nirupam Biswas.
Created using < a href = "http://sphinx.pocoo.org/" > Sphinx< / a > 1.1.3.
< / div >
< / body >
< / html >