Package: django-multiselectfield
django-multiselectfieldA 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 thissnippet.Supported Python versions: 2.7, 3.4+Supported Django versions: 1.4-2.0+InstallationInstall with pip$pipinstalldjango-multiselectfieldConfigure your models.pyfrommultiselectfieldimportMultiSelectField# ...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'))classMyModel(models.Model):# .....my_field=MultiSelectField(choices=MY_CHOICES)my_field2=MultiSelectField(choices=MY_CHOICES2,max_choices=3,max_length=3)In your settings.pyOnly you need it, if you want the translation of django-multiselectfieldINSTALLED_APPS=('django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.sites','django.contrib.admin',#.....................#'multiselectfield',)Customizing templatesIt is possible to customize the HTML of this widget in your form template. To do so, you will need to loop throughform.{field}.field.choices. Here is an example that displays the field label underneath/after the checkbox for aMultiSelectFieldcalledproviders:{%forvalue,textinform.providers.field.choices%}<divclass="ui slider checkbox"><inputid="id_providers_{{forloop.counter0}}"name="{{form.providers.name}}"type="checkbox"value="{{value}}"{%ifvalueinchecked_providers%}checked="checked"{%endif%}><label>{{text}}</label></div>{%endfor%}Django REST FrameworkDjango REST Framework comes with aMultipleChoiceFieldthat works perfectly with this:fromrest_frameworkimportfields,serializersfrommyapp.modelsimportMY_CHOICES,MY_CHOICES2classMyModelSerializer(serializers.HyperlinkedModelSerializer):# ...my_field=fields.MultipleChoiceField(choices=MY_CHOICES)my_field2=fields.MultipleChoiceField(choices=MY_CHOICES2)# ...Known Bugs and LimitationsAll 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:Named groupsdo 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.Only in Django 1.6 and 1.7, due toDjango bug #9619, passing a MultiSelectField tovalues()orvalues_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, sovalues()andvalues_list()return a vanilla Python list of values for Django <= 1.5 and Django >= 1.8.Seeissue #40for discussion about this bug.DevelopmentYou can get the last bleeding edge version of django-multiselectfield by doing a clone
of its git repository:gitclonehttps://github.com/goinnn/django-multiselectfieldExample projectThere is a fully configured example project in theexample directory. You can run it as usual:pythonmanage.pymigrate# or python manage.py syncdb --noinputpythonmanage.pyloaddataapp_datapythonmanage.pyrunserver0.1.12 (2020-02-20)Optimize multiselectfield to_python methodThanks to:daimon990.1.11 (2019-12-19)Added support for Django 3Added support for Python 3.8Thanks to:thijsBoehme0.1.9 (2019-10-02)Added support for Django 2Added support for Python 3.6Drop support for Python (2.6, 3.3)Thanks to:hirokinko0.1.6 (2017-05-10)Added support for Django 1.11Added support for Python 3.6Improved rendering in Django adminImproved documentationThanks to:attenixcLeilaniAnn0.1.5 (2017-01-02)Added support for Django 1.8-1.10Added support for named groups in choicesAdded support for min_choices argumentVarious fixesMore testsThanks to:danilogbotelhodmitry-krasilnikovKamil Dębowski0.1.4 (2016-02-23)Fixed warning about SubfieldBaseAdded support for Django 1.8+Added support for named groupsWe now play nice with django-dynamic-fixtureMore tests0.1.3 (2014-10-13)Support to Django 1.7 (I’m sorry to the delay)Adding get_FIELD_list functionFix an error when a MultiSelectField was reandonly at the admin siteThanks to:HernilVasyl StanislavchukLitchfieldChris-erickson0.1.2 (2014-04-04)Include the spanish translations to the pypi eggImprovements in the readme fileWindows OS compatibilityThanks to:StillNewbDiego Yungh0.1.1 (2013-12-04)Move the multiselectfield app to parent folderDetails0.1.0 (2013-11-30)Test/example projectNow works if the first composant of the list of tuple is an integerNow max_length is not required, the Multiselect field calculate it automatically.The max_choices attr can be a attr in the model fieldRefactor the codeSpanish translationsSupport to python2.6Thanks to:Daniele Procida0.0.3 (2013-09-11)Python 3 compatibleFix an error, the snippet had another error when the choices were translatablesImprovements in the README file0.0.2 (2012-09-28)Fix an error, the snippet had an error.0.0.1 (2012-09-27)Initial version from the nextsnippet