Store lists in a single Django column without joins?

After a decade of development, version 1.0.0 of django-select-multiple-field is here, bringing full support for modern Python and Django versions to store multiple choices in a single database column without extra join tables.

August 20, 2026 • 2 min read

Store lists in a single Django column without joins?

Released: django-select-multiple-field

Version 1.0.0 of django-select-multiple-field is finally out. It took over a decade of slow development to get here, but the first stable release is ready. If you are still running the 0.4.2 release from way back in 2015, this is the update you have been waiting for.

What it does

The core idea behind the field has not changed. You can store multiple choices inside a single model column as a Python list without creating extra many-to-many join tables.

Ready for modern Django

Why you should upgrade to 1.0.0:

  • Python 3.10 through 3.14 are supported along with Django 4.2 LTS, 5.2 LTS, and 6.x. The tox matrix runs 210 tests across all those combinations, so you do not have to worry about subtle breakages.
  • Selection order and duplicate values are preserved when passed through the database. The system does not silently reorder or collapse your data.
  • Validation is much tighter now. Dedicated validators enforce your choice limits with clear error codes, and bad field setups are caught when instantiated rather than failing quietly later.
  • The feature set is expanded. You get a configurable CSV delimiter, callable choices support, optgroups, and automatic length calculations. You can also pass null=True if you prefer storing database NULLs instead of empty strings. Check out the README on Github for more on that.
  • The form widget was renamed to SelectMultipleWidget to fix a confusing name collision. The old widget name still works with a deprecation warning so your code will not break overnight.
  • A deep code review fixed two dozen outstanding issues, and every fix is backed by good test coverage.

Installing the package takes a single command:

pip install django-select-multiple-field

You will need Python 3.10 or newer and Django 4.2 or newer. The code is licensed under the BSD license.

Check the README on GitHub for the full documentation on form fields, custom delimiters, and validation error codes. If you run into any bugs, open a ticket on the issue tracker.

Let's Work Together

I am based in Victoria, British Columbia, and I work with businesses across Vancouver Island and the Pacific Northwest. If the developer that built your Django application has moved on and no one is maintaining your codebase, or if you run an MSP and a client is asking for custom software work your team does not handle, I'd love to hear from you.

Schedule a free 30-minute consultation to talk about your needs. No commitment required.

Start a conversation