Skip to main content

django-multiselectfield

https://travis-ci.org/idenfy/django-multiselectfield.svg?branch=master https://coveralls.io/repos/github/idenfy/django-multiselectfield/badge.svg?branch=master https://badge.fury.io/py/django-multipleselectfield.png

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)

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)

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

Metadata

Release files for django-multipleselectfield 0.2.0.post2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-multipleselectfield 0.2.0.post2
File Size Uploaded
django-multipleselectfield-0.2.0.post2.tar.gz 12.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-multipleselectfield 0.2.0.post2
File Interpreter ABI Platform
django_multipleselectfield-0.2.0.post2-py3-none-any.whl Python 3 none any Details

Total release size: 26.6 kB

Release files / django-multipleselectfield-0.2.0.post2.tar.gz

Download URL django-multipleselectfield-0.2.0.post2.tar.gz
Size 12.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a0b20f68c8f61fa48ff1b85f2f3c90d71f38eecd0ff187c20400e1eda47f7afc
BLAKE2b-256 checksum
How to use checksums
81b894c770fd77316bd9d35bb608baf112692bb0b51baad478a0a3c2d8ce84c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.2 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.6.6

Release files / django_multipleselectfield-0.2.0.post2-py3-none-any.whl

Download URL django_multipleselectfield-0.2.0.post2-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9761564547301024913db225b17a5bd4b8a70ec9c1d76e9f87308793c99de1ef
BLAKE2b-256 checksum
How to use checksums
c6f86da42f2b5b8f2f0791fad51696f8406f84386a425a886adac8d8a633ceeb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.2 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.6.6

Release history Release notifications | RSS feed

This release

0.2.0.post2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page