Metadata-Version: 2.0 Name: django-multiselectfield Version: 0.1.12 Summary: Django multiple select field Home-page: https://github.com/goinnn/django-multiselectfield Author: Pablo Martin Author-email: goinnn@gmail.com License: LGPL 3 Keywords: django,multiple,select,field,choices Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Framework :: Django Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Requires-Dist: django (>=1.4) 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 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 `_. Supported Python versions: 2.7, 3.4+ Supported Django versions: 1.4-2.0+ Installation ============ Install with pip ---------------- .. code-block:: bash $ pip install django-multiselectfield Configure 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', ) 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``: .. code-block:: HTML+Django {% for value, text in form.providers.field.choices %}
{% endfor %} Django REST Framework --------------------- Django REST Framework comes with a ``MultipleChoiceField`` that works perfectly with this: .. code-block:: python 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) # ... Known Bugs and Limitations ========================== All tests pass on Django 1.4, 1.5, and 1.8+, so if you can, use a modern version of Django. However, if you must use Django 1.6 or 1.7 there are two known issues you will need to be aware of: 1. `Named groups `_ do not render properly in Django 1.6. The workaround is to manually render the field in your form or use a custom widget. If your workaround is suitably generic, please submit a pull request with it. 2. Only in Django 1.6 and 1.7, due to `Django bug #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 `_ 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 =============== There is a fully configured example project in the `example directory `_. You can run it as usual: .. code-block:: bash python manage.py migrate # or python manage.py syncdb --noinput python manage.py loaddata app_data python manage.py runserver 0.1.12 (2020-02-20) ------------------- * Optimize multiselectfield to_python method * Thanks to: * `daimon99 `_ 0.1.11 (2019-12-19) ------------------- * Added support for Django 3 * Added support for Python 3.8 * Thanks to: * `thijsBoehme `_ 0.1.9 (2019-10-02) ------------------ * Added support for Django 2 * Added support for Python 3.6 * Drop support for Python (2.6, 3.3) * Thanks to: * `hirokinko `_ 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: * `atten `_ * `ixc `_ * `LeilaniAnn `_ 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: * `danilogbotelho `_ * `dmitry-krasilnikov `_ * `Kamil Dębowski `_ 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: * `Hernil `_ * `Vasyl Stanislavchuk `_ * `Litchfield `_ * `Chris-erickson `_ 0.1.2 (2014-04-04) ------------------ * Include the spanish translations to the pypi egg * Improvements in the readme file * Windows OS compatibility * Thanks to: * `StillNewb `_ * `Diego Yungh `_ 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: * `Daniele Procida `_ 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 `_