Package: django-multipleselectfield
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 package is inspired by thissnippet.Supported Python versions: 2.7, 3.4+Supported Django versions: 1.11-2.1+InstallationInstall with pip$pipinstalldjango-multipleselectfieldConfigure 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)# ...DevelopmentYou can get the last bleeding edge version of django-multiselectfield by doing a clone of its git repository:gitclonehttps://github.com/idenfy/django-multiselectfieldExample projectThere is a fully configured example project in theexample directory. You can run it as usual:pythonmanage.pymigratepythonmanage.pyloaddataapp_datapythonmanage.pyrunserver0.2.0 (2017-05-10)Added support for Django 2.0+Added support for Python 3.70.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