https://github.com/polyconseil/django-select2-rocks
Yet another integration glue between Django and Select2 JS
https://github.com/polyconseil/django-select2-rocks
Last synced: 9 months ago
JSON representation
Yet another integration glue between Django and Select2 JS
- Host: GitHub
- URL: https://github.com/polyconseil/django-select2-rocks
- Owner: Polyconseil
- License: bsd-2-clause
- Created: 2014-02-17T08:58:09.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2023-12-19T17:59:05.000Z (over 2 years ago)
- Last Synced: 2025-06-04T11:11:16.246Z (about 1 year ago)
- Language: JavaScript
- Size: 155 KB
- Stars: 9
- Watchers: 37
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Django-select2-rocks
====================
Light integration glue between `Django `_ and
`Select2 `_.
This project is inspired by `Django-Select2 `_ and
`django-select2light `_.
Django-select2-rocks is distributed under the BSD 2-clause license.
Installation
------------
1. pip install django_select2_rocks
2. add ``select2rocks`` to your ``INSTALL_APPS``
3. ``python manage.py collectstatic`` will install Django Select2 Rocks JS.
4. Include jQuery (1.7+), Select2 JS/CSS (not provided, tested with v3.4.5) and
select2rocks/select2rocks.js in your templates.
5. Now, you can use ``Select2ModelChoiceField`` fields in your forms.
Design
------
Django-select2-rocks provides widgets to render and initialize Select2 inputs.
The widget rendering is based on Django with a further step which adds a JS
initialization for each input (on DOM ready). When a character is typed in the
input field, an AJAX request is sent to the URL associated to the field.
The widget API is designed to allow you to pass any arguments you want to
Select2 JS code (eg. allowClear option).
You can use various JSON views to answer to Select2 AJAX queries, and so to
adjust search terms or the format of the results, it's possible to extend the
default django-select2-rocks backend (see select2rocks-backends.js in testproj
for an example).
Example
-------
The testproj project contains examples with a simple JSON view and a
Django REST framework view.
.. code-block:: python
import select2rocks
class BeachForm(forms.Form):
beach = select2rocks.Select2ModelChoiceField(
queryset=Beach.objects.all(),
widget=select2rocks.AjaxSelect2Widget(url_name='json_beaches'))
Subtleties
----------
Beware, the internal representation of the fields uses commas (``,``) to separate items. Thus you **cannot** use commas
in your labels. Otherwise we'll interpret it as a separator and try to work with the text on both sides of the comma,
which will most likely break.
Get the Code
------------
Django-select2-rocks is developed on GitHub:
https://github.com/polyconseil/django-select2-rocks
You can either clone the public repository:
.. code-block:: bash
$ git clone git://github.com/polyconseil/django-select2-rocks.git
Once you have a copy of the source, you can install it with:
.. code-block:: bash
$ python setup.py install