if (!window['django_select2']) {
    // This JS file can be included multiple times. So, as not to overwrite previous states, we run this only once.

    (function ($) {
        window.django_select2 = {
                MULTISEPARATOR: String.fromCharCode(31), // We use this unprintable char as separator,
                // since this can't be entered by user.
                get_url_params: function (term, page, context) {
                    var field_id = $(this).data('field_id'),
                        res = {
                            'term': term,
                            'page': page,
                            'context': context
                        };
                    if (field_id) {
                        res['field_id'] = field_id;
                    }
                    return res;
                },
                process_results: function (data, page, context) {
                    var results;
                    if (data.err && data.err.toLowerCase() === 'nil') {
                        results = {
                            'results': data.results
                        };
                        if (context) {
                            results['context'] = context;
                        }
                        if (data.more === true || data.more === false) {
                            results['more'] = data.more;
                        }
                    } else {
                        results = {'results': []};
                    }
                    if (results.results) {
                        $(this).data('results', results.results);
                    } else {
                        $(this).removeData('results');
                    }
                    return results;
                },
                onValChange: function () {
                    django_select2.updateText($(this));
                },
                prepareValText: function (vals, txts, isMultiple) {
                    var data = [];
                    $(vals).each(function (index) {
                        data.push({id: this, text: txts[index]});
                    });
                    if (isMultiple) {
                        return data;
                    } else {
                        if (data.length > 0) {
                            return data[0];
                        } else {
                            return null;
                        }
                    }
                },
                updateText: function ($e) {
                    var val = $e.select2('val'), data = $e.select2('data'), txt = $e.txt(), isMultiple = !!$e.attr('multiple'),
                        diff;

                    if (val || val === 0) { // Means value is set. A numerical 0 is also a valid value.
                        if (isMultiple) {
                            if (val.length !== txt.length) {
                                txt = [];
                                $(val).each(function (idx) {
                                    var i, value = this, id;

                                    for (i in data) {
                                        id = data [i].id;
                                        if (id instanceof String) {
                                            id = id.valueOf();
                                        }
                                        if (id == value) {
                                            txt.push(data[i].text);
                                        }
                                    }
                                });
                            }
                        } else {
                            txt = data.text;
                        }
                        $e.txt(txt);
                    } else {
                        $e.txt('');
                    }
                },
                getValText: function ($e) {
                    var val = $e.select2('val'), res = $e.data('results'), txt = $e.txt(), isMultiple = !!$e.attr('multiple'),
                        f, id = $e.attr('id');
                    if (val || val === 0) { // Means value is set. A numerical 0 is also a valid value.

                        if (!isMultiple) {
                            val = [val];
                            if (txt || txt === 0) {
                                txt = [txt];
                            }
                        }

                        if (txt === 0 || (txt && val.length === txt.length)) {
                            return [val, txt];
                        }

                        f = $e.data('userGetValText');
                        if (f) {
                            txt = f($e, val, isMultiple);
                            if (txt || txt === 0) {
                                return [val, txt];
                            }
                        }

                        if (res) {
                            txt = [];
                            $(val).each(function (idx) {
                                var i, value = this;

                                for (i in res) {
                                    if (res[i].id == value) {
                                        val[idx] = res[i].id; // To set it to correct data type.
                                        txt.push(res[i].text);
                                    }
                                }
                            });
                            if (txt || txt === 0) {
                                return [val, txt];
                            }
                        }
                    }
                    return null;
                },
                onInit: function (e, callback) {
                    e = $(e);
                    var id = e.attr('id'), data = null, val = e.select2('val');

                    if (!val && val !== 0) {
                        val = e.data('initVal');
                    }

                    if (val || val === 0) {
                        // Value is set so need to get the text.
                        data = django_select2.getValText(e);
                        if (data && data[0]) {
                            data = django_select2.prepareValText(data[0], data[1], !!e.attr('multiple'));
                        }
                    }
                    if (!data) {
                        e.val(null); // Nulling out set value so as not to confuse users.
                    }
                    callback(data); // Change for 2.3.x
                    django_select2.updateText(e);
                },
                createSearchChoice: function (term, data) {
                    if (!data || $(data).filter(function () {
                            return this.text.localeCompare(term) === 0;
                        }).length === 0) {
                        return {
                            id: term,
                            text: term
                        };
                    }
                },
                onMultipleHiddenChange: function () {
                    var $e = $(this), valContainer = $e.data('valContainer'), name = $e.data('name'), vals = $e.val();
                    valContainer.empty();
                    if (vals) {
                        vals = vals.split(django_select2.MULTISEPARATOR);
                        $(vals).each(function () {
                            var inp = $('<input type="hidden">').appendTo(valContainer);
                            inp.attr('name', name);
                            inp.val(this);
                        });
                    }
                },
                initMultipleHidden: function ($e) {
                    var valContainer;

                    $e.data('name', $e.attr('name'));
                    $e.attr('name', '');

                    valContainer = $('<div>').insertAfter($e).css({'display': 'none'});
                    $e.data('valContainer', valContainer);

                    $e.change(django_select2.onMultipleHiddenChange);
                    if ($e.val()) {
                        $e.change();
                    }
                },
                convertArrToStr: function (arr) {
                    return arr.join(django_select2.MULTISEPARATOR);
                },
                runInContextHelper: function (f, id) {
                    return function () {
                        var args = Array.prototype.slice.call(arguments, 0);
                        return f.apply($('#' + id).get(0), args);
                    }
                },
                logErr: function () {
                    if (console && console.error) {
                        args = Array.prototype.slice.call(arguments);
                        console.error.apply(console, args);
                    }
                }
            };



        (function (isDebug) { // Only used for debugging.
            if (isDebug) {
                for (var i in django_select2) {
                    var f = django_select2[i];
                    if (typeof(f) == "function") {
                        django_select2[i] = (function (i, f) {
                            return function () {
                                console.log('Function ' + i + ' called for object: ', this);
                                return f.apply(this, arguments);
                            };
                        }(i, f));
                    }
                }
            }
        }(false));


        // This sets or gets the text lables for an element. It merely takes care returing array or single
        // value, based on if element is multiple type.
        $.fn.txt = function (val) {
            if (typeof(val) !== 'undefined') {
                if (val) {
                    if (val instanceof Array) {
                        if (this.attr('multiple')) {
                            val = django_select2.convertArrToStr(val);
                        } else {
                            val = val[0]
                        }
                    }
                    this.attr('txt', val);
                } else {
                    this.removeAttr('txt');
                }
                return this;
            } else {
                val = this.attr('txt');
                if (this.attr('multiple')) {
                    if (val) {
                        val = val.split(django_select2.MULTISEPARATOR);
                    } else {
                        val = [];
                    }
                }
                return val;
            }
        };
    })(jQuery);
}

@@ -10578,13 +10578,25 @@
 )(jQuery
+ %7C%7C jQuery10
 );%0A%7D%0A

Use jquery or Jquery10