NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4751 most downloaded on PyPI
Django multiple select field
Last release 1 years ago
12 Jun 2025
Ships unpredictably
gaps range from 8 days to 4.4 years
Most releases are documented
notes for 16 of 19 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
22 releases · first in 2012
Badge image worked on GitHub but was broken on PyPI — fixed it.
Nothing published for this version
This release introduces multiple changes that are incompatible with previous versions.
This release introduces multiple changes that are incompatible with previous versions.
The major version number has been incremented following Semantic Versioning (SemVer) <https://semver.org/>_, as several components of the package have changed in ways that may require updates in client code.
The internal codebase has been significantly cleaned up and reorganized, making it more maintainable and consistent.
This version contains 40% fewer lines of code compared to the previous release.
Less code means fewer bugs, easier maintenance, and better long-term sustainability.
Breaking changes
Remove MSFList (01dcad230dc368b88a39bfc36f90ddd145f381a2):
Remove MSFFlatchoices (01dcad230dc368b88a39bfc36f90ddd145f381a2):
In to_python method, value is a list or a string. (c4579138dda2833cbce26afbf57da5353aa45690)
Removing integer choices:
Fix: Form instance generated twice since Django (#168)
Fix CSS admin:
Fix Properly Display Categorized Choices in get_FOO_display (#169)
SortMultiSelectField: (#172)
Documentation:
How to add a filter to the Django administration:
How add a django multiselect field to list_display in Django administration
How to add support for read-only fields in the Django administration:
Cleanup: Removed outdated code and updated compatibility:
One column per quarter.
This release introduces multiple changes that are incompatible with previous versions.
The major version number has been incremented following Semantic Versioning (SemVer), as several components of the package have changed in ways that may require updates in client code.
The internal codebase has been significantly cleaned up and reorganized, making it more maintainable and consistent.
This version contains 40% fewer lines of code compared to the previous release.
Less code means fewer bugs, easier maintenance, and better long-term sustainability.
Breaking changes
Remove MSFList (01dcad230dc368b88a39bfc36f90ddd145f381a2):
Removed: (50d3f785883e0a314f2dc89950e3fe1e88a7ede6)
It was created to support MultiSelectFields in admin.list_display, but it never actually worked. If you add a multiselect field to list_display, Django does not call to __str__ method of MSGList (renamed to MSFList)
It was created for integer choices too and it is a misconception. This is explained in the README file.
Remove MSFFlatchoices (01dcad230dc368b88a39bfc36f90ddd145f381a2):
Removed: (5638247c1d70670d4f81adf35143ef17a7d7575e)
In list_display, labels for the choices are now shown (comma-separated) instead of the values of the choices (comma-separated).
In to_python method, value is a list or a string. (c4579138dda2833cbce26afbf57da5353aa45690)
Remove set case and dict case
If this breaks something, please create a test to help understand the use case.
Removing integer choices:
It was a mistake. MultiSelectField inherits of CharField, not IntegerField.
It is impossible knows if original choice is (1, 'Item title 2.1') or ('1', 'Item title 2.1')
Fix: Form instance generated twice since Django (#168)
Fix CSS admin:
Fix Properly Display Categorized Choices in get_FOO_display (#169)
SortMultiSelectField: (#172)
Documentation:
How to add a filter to the Django administration:
Inspired by (#116)
How add a django multiselect field to list_display in Django administration
How to add support for read-only fields in the Django administration:
Cleanup: Removed outdated code and updated compatibility:
Thanks to:
Special thanks to:
ccalero for fighting and updating django-multiselectfield
Joinup Green Intelligence for believing in free (libre) software
Return MSFList instead of a plain list from form fields (#118 _, #135 _)
Optimize multiselectfield to_python method
Optimize multiselectfield to_python method
* Added support for Django 3 * Added support for Python 3.8 * Thanks to: * thijsBoehme _
Added support for Django 3
Added support for Python 3.8
Nothing published for this version
Drop support for Python (2.6, 3.3)
Added support for Django 2
Added support for Python 3.6
Drop support for Python (2.6, 3.3)
Nothing published for this version
Nothing published for this version
Improved rendering in Django admin
Added support for Django 1.11
Added support for Python 3.6
Improved rendering in Django admin
Improved documentation
Nothing published for this version
Nothing published for this version
Added support for Django 1.8-1.10
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
Fixed warning about SubfieldBase
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
Support to Django 1.7 (I'm sorry to the delay)
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
Include the spanish translations to the pypi egg
Include the spanish translations to the pypi egg
Improvements in the readme file
Windows OS compatibility
Move the multiselectfield app to parent folder
Move the multiselectfield app to parent folder
Details
Now works if the first composant of the list of tuple is an integer
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
Fix an error, the snippet had another error when the choices were translatables
Python 3 compatible
Fix an error, the snippet had another error when the choices were translatables
Improvements in the README file
Fix an error, the snippet had an error.
Fix an error, the snippet had an error.
Initial version from the next snippet _
Initial version from the next snippet
Your coding agent can read these notes before it upgrades. Set up the MCP server →