Go to file
2016-09-23 04:26:24 -06:00
example Add test for .values_list() 2016-09-23 04:15:01 -06:00
multiselectfield Remove flatchoices property - fixes #37 2016-09-23 04:26:24 -06:00
.coveragerc Structure of the tests 2013-11-26 19:20:19 +01:00
.gitignore Add Django 1.8-1.10 to tox and travis configs 2016-09-22 09:28:31 -06:00
.travis.yml Add Django 1.8-1.10 to tox and travis configs 2016-09-22 09:28:31 -06:00
CHANGES.rst Fix #16 Now the multiselectfield could be a readonly. 2014-10-13 17:08:19 +02:00
COPYING.LGPLv3 Support to python 3, improvements in the readme and fix a little detail 2013-09-11 10:49:03 +02:00
MANIFEST.in Windows OS compatibility 2014-04-04 09:46:07 +02:00
README.rst Add test for .values_list() 2016-09-23 04:15:01 -06:00
setup.py Add Django 1.8-1.10 to tox and travis configs 2016-09-22 09:28:31 -06:00
tox.ini Add test for .values_list() 2016-09-23 04:15:01 -06:00

django-multiselectfield
=======================

.. image:: https://travis-ci.org/goinnn/django-multiselectfield.png?branch=master
    :target: https://travis-ci.org/goinnn/django-multiselectfield

.. image:: https://coveralls.io/repos/goinnn/django-multiselectfield/badge.png?branch=master
    :target: https://coveralls.io/r/goinnn/django-multiselectfield

.. image:: https://badge.fury.io/py/django-multiselectfield.png
    :target: https://badge.fury.io/py/django-multiselectfield

.. image:: https://pypip.in/d/django-multiselectfield/badge.png
    :target: https://pypi.python.org/pypi/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 egg is inspired by this `snippet <http://djangosnippets.org/snippets/1200/>`_.

Installation
============


In your models.py
-----------------

.. code-block:: python

    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

.. code-block:: python

    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.admin',

        #.....................#

        'multiselectfield',
    )


Known Bugs and Limitations
==========================

Only in Django 1.6 and 1.7, due to `Django bug #9619 <https://code.djangoproject.com/ticket/9619>`_, passing a MultiSelectField to ``values()`` or ``values_list()`` will return the database representation of the field (a string of comma-separated values). The workaround is to manually call ``.split(',')`` on the result.

The Django bug was introduced in Django 1.6 and is fixed in Django 1.8 and onward, so ``values()`` and ``values_list()`` return a vanilla Python list of values for Django <= 1.5 and Django >= 1.8.

See `issue #40 <https://github.com/goinnn/django-multiselectfield/issues/40>`_ for discussion about this bug.


Development
===========

You can get the last bleeding edge version of django-multiselectfield by doing a clone
of its git repository:

.. code-block:: bash

    git clone https://github.com/goinnn/django-multiselectfield


Example project
===============

In the source tree, you will find a directory called  `example <https://github.com/goinnn/django-multiselectfield/tree/master/example/>`_. It contains
a readily setup project that uses django-multiselectfield. You can run it as usual:

.. code-block:: bash

    python manage.py syncdb --noinput
    python manage.py loaddata app_data
    python manage.py runserver