django-multiselectfield
Django multiple select field
Decision gist · record as of 2026-08-14
Yes, if you need lightweight multi-select storage in Django without a separate table. Install friction is minimal and the package is stable. However, consider a proper many-to-many relationship if you need complex queries, filtering, or large-scale data. The LGPL license requires source disclosure of modifications in derivative works, which is fine for most projects but needs review in proprietary contexts.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Django 3.2+ and Python 3.8+.
- For SortMultiSelectField, jQuery and jQuery UI must be included in your template.
- Low friction: pure Python wheel with only Django as a runtime dependency.
License · maintenance · safety
LGPL 3 (copyleft) — Licensed under LGPL 3 (copyleft). You must disclose source code modifications and distribute under the same license if you redistribute the package; acceptable for most open-source and internal projects but requires review in proprietary contexts.
last release 2025-06-12 (428 days) · last repo commit 2025-06-12 · 469 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,181,991 downloads/mo, #4,255 on PyPI
Alternatives
Verify before relying
pip install django-multiselectfield
from multiselectfield import MultiSelectField
class MyModel(models.Model):
choices = (('key1', 'Label 1'), ('key2', 'Label 2'))
my_field = MultiSelectField(choices=choices, default=['key1'])- Whether the package handles Django 5.2+ beyond the classifiers listed (5.0 and 5.1 are declared supported).
- Performance characteristics when storing large numbers of selections in a single field.
- Migration path if you need to convert comma-separated storage to a proper many-to-many relationship.
What it is and what it does
django-multiselectfield extends Django's model and form field system to handle multiple selections from a predefined choice list. Instead of using a separate many-to-many table, it stores the selected values as a comma-separated string in a CharField, which is simpler for lightweight use cases but trades query flexibility for simplicity. The package provides two field types: MultiSelectField for basic multi-choice storage and SortMultiSelectField (added in version 1.0.0) for user-orderable selections using jQuery UI.
The package integrates directly into Django's admin interface and form rendering. It handles validation (min_choices, max_choices), provides a display method for templates, and includes CSS fixes for admin alignment. The core dependency is Django alone; it supports Python 3.8+ and Django 3.2 through 5.1. Maintenance is steady but aging, with the last release in June 2025.
Use it for
- Store tags or categories on a model where a many-to-many table is overkill and simple comma-separated storage suffices.
- Add multi-select checkboxes to Django admin forms without writing custom widgets.
- Let users rank or reorder selected items using SortMultiSelectField with jQuery UI drag-and-drop.
- Filter Django admin list views by multiple selections using the provided SimpleListFilter pattern.
- Display multiple selections in admin list_display using the get_FOO_display() helper.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need lightweight multi-select storage in Django without a separate table.
Install friction is minimal and the package is stable. However, consider a proper many-to-many relationship if you need complex queries, filtering, or large-scale data. The LGPL license requires source disclosure of modifications in derivative works, which is fine for most projects but needs review in proprietary contexts.
Install
django-multiselectfield on PyPI
Before you install
Low friction: pure Python wheel with only Django as a runtime dependency. Last release was 2025-06-12 and repo is active with 469 stars, though maintenance status is aging (428 days since last release).
Requires Django 3.2+ and Python 3.8+. For SortMultiSelectField, jQuery and jQuery UI must be included in your template.
License in practice
Licensed under LGPL 3 (copyleft). You must disclose source code modifications and distribute under the same license if you redistribute the package; acceptable for most open-source and internal projects but requires review in proprietary contexts.
Quickstart
pip install django-multiselectfield
from multiselectfield import MultiSelectField
class MyModel(models.Model):
choices = (('key1', 'Label 1'), ('key2', 'Label 2'))
my_field = MultiSelectField(choices=choices, default=['key1'])
Verify before relying
- Whether the package handles Django 5.2+ beyond the classifiers listed (5.0 and 5.1 are declared supported).
- Performance characteristics when storing large numbers of selections in a single field.
- Migration path if you need to convert comma-separated storage to a proper many-to-many relationship.
Package facts
| License | LGPL 3 copyleft |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagedjango |
| Maintenance | Aging 428 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,181,991 / month, #4,255 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaFramework :: DjangoFramework :: Django :: 3.2Framework :: Django :: 4.2Framework :: Django :: 5.0Framework :: Django :: 5.1License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9 |
Evidence: django_multiselectfield-1.0.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “django multiple select field”
- django-multiselectfieldAdds model and form fields to Django that let you store and manage…
- django-ajax-selectsAdds autocomplete search fields to Django Admin for managing…
- django-colorfieldAdds a color field to Django models with an interactive color picker…
Give your agent the search over MCP, or paste the wish link into any chat.
More Dynamic Content packages
MarkupSafe provides a text object that escapes special characters so untrusted strings can be safely embedded in HTML and XML without injection attacks.
Jinja2 is a templating engine that renders dynamic content by combining templates with Python-like syntax and data, supporting template inheritance, macros, autoescaping, and sandboxed execution.
Soupsieve is a CSS selector library designed to work with Beautiful Soup 4 to select, match, and filter HTML and XML elements using modern CSS selectors from CSS level 1 through CSS level 4 specifications.
Install it if you use Beautiful Soup for HTML or XML parsing and want modern CSS selector support.
Werkzeug is a WSGI utility library providing request/response objects, URL routing, an interactive debugger, HTTP utilities, and a development server for building web applications.
Flask is a lightweight WSGI web application framework for building web applications in Python, from simple single-page sites to complex multi-route applications.
Mako compiles Python-embedded templates into Python modules for fast rendering, supporting layout inheritance, custom functions, and direct Python expressions within template syntax.
See also django-ajax-selects · django-admin-autocomplete-filter · django-bitfield · django-more-admin-filters · djangocms-attributes-field · django-admin-list-filter-dropdown · django-admin-csvexport · django-autoslug · django-extended-choices · dj-inmemorystorage