Django multiple select field
Project description
django-multiselectfield
A new model field and form field. With this you can get a multiple select from a choices. Stores to the database as a CharField of comma-separated values.
This package is inspired by this snippet.
Supported Python versions: 2.7, 3.4+
Supported Django versions: 1.11-2.1+
Installation
Install with pip
$ pip install django-multipleselectfield
Configure your models.py
from multiselectfield import MultiSelectField
# ...
MY_CHOICES = (('item_key1', 'Item title 1.1'),
('item_key2', 'Item title 1.2'),
('item_key3', 'Item title 1.3'),
('item_key4', 'Item title 1.4'),
('item_key5', 'Item title 1.5'))
MY_CHOICES2 = ((1, 'Item title 2.1'),
(2, 'Item title 2.2'),
(3, 'Item title 2.3'),
(4, 'Item title 2.4'),
(5, 'Item title 2.5'))
class MyModel(models.Model):
# .....
my_field = MultiSelectField(choices=MY_CHOICES)
my_field2 = MultiSelectField(choices=MY_CHOICES2,
max_choices=3,
max_length=3)
In your settings.py
Only you need it, if you want the translation of django-multiselectfield
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
#.....................#
'multiselectfield',
)
Customizing templates
It is possible to customize the HTML of this widget in your form template. To do so, you will need to loop through form.{field}.field.choices. Here is an example that displays the field label underneath/after the checkbox for a MultiSelectField called providers:
{% for value, text in form.providers.field.choices %}
<div class="ui slider checkbox">
<input id="id_providers_{{ forloop.counter0 }}" name="{{ form.providers.name }}" type="checkbox" value="{{ value }}"{% if value in checked_providers %} checked="checked"{% endif %}>
<label>{{ text }}</label>
</div>
{% endfor %}
Django REST Framework
Django REST Framework comes with a MultipleChoiceField that works perfectly with this:
from rest_framework import fields, serializers
from myapp.models import MY_CHOICES, MY_CHOICES2
class MyModelSerializer(serializers.HyperlinkedModelSerializer):
# ...
my_field = fields.MultipleChoiceField(choices=MY_CHOICES)
my_field2 = fields.MultipleChoiceField(choices=MY_CHOICES2)
# ...
Development
You can get the last bleeding edge version of django-multiselectfield by doing a clone of its git repository:
git clone https://github.com/idenfy/django-multiselectfield
Example project
There is a fully configured example project in the example directory. You can run it as usual:
python manage.py migrate
python manage.py loaddata app_data
python manage.py runserver
0.2.0 (2017-05-10)
Added support for Django 2.0+
Added support for Python 3.7
0.1.6 (2017-05-10)
Added support for Django 1.11
Added support for Python 3.6
Improved rendering in Django admin
Improved documentation
- Thanks to:
0.1.5 (2017-01-02)
Added support for Django 1.8-1.10
Added support for named groups in choices
Added support for min_choices argument
Various fixes
More tests
- Thanks to:
0.1.4 (2016-02-23)
Fixed warning about SubfieldBase
Added support for Django 1.8+
Added support for named groups
We now play nice with django-dynamic-fixture
More tests
0.1.3 (2014-10-13)
Support to Django 1.7 (I’m sorry to the delay)
Adding get_FIELD_list function
Fix an error when a MultiSelectField was reandonly at the admin site
- Thanks to:
0.1.2 (2014-04-04)
Include the spanish translations to the pypi egg
Improvements in the readme file
Windows OS compatibility
- Thanks to:
0.1.1 (2013-12-04)
Move the multiselectfield app to parent folder
Details
0.1.0 (2013-11-30)
Test/example project
Now works if the first composant of the list of tuple is an integer
Now max_length is not required, the Multiselect field calculate it automatically.
The max_choices attr can be a attr in the model field
Refactor the code
Spanish translations
Support to python2.6
- Thanks to:
0.0.3 (2013-09-11)
Python 3 compatible
Fix an error, the snippet had another error when the choices were translatables
Improvements in the README file
0.0.2 (2012-09-28)
Fix an error, the snippet had an error.
0.0.1 (2012-09-27)
Initial version from the next snippet
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django-multipleselectfield-0.2.0.post2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0b20f68c8f61fa48ff1b85f2f3c90d71f38eecd0ff187c20400e1eda47f7afc |
|
MD5 | 687efea8dde2122709a95f0367c00cce |
|
BLAKE2b-256 | 81b894c770fd77316bd9d35bb608baf112692bb0b51baad478a0a3c2d8ce84c8 |
Hashes for django_multipleselectfield-0.2.0.post2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9761564547301024913db225b17a5bd4b8a70ec9c1d76e9f87308793c99de1ef |
|
MD5 | 6ec23eeee7ef4fcac37d53deb40ce700 |
|
BLAKE2b-256 | c6f86da42f2b5b8f2f0791fad51696f8406f84386a425a886adac8d8a633ceeb |