About Multiple Choice Fields with Django Admin Widget
Use FilteredSelectMultiple
widget with the forms.MultipleChoiceField
in the form to get the same kind of widget you get with filter_horizontal
attribute for many-to-many fields. For example:
# configuration/admin.py
from django import forms
from django.contrib import admin
from django.contrib.admin.widgets import FilteredSelectMultiple
from .models import Configuration
class ConfigurationForm(forms.ModelForm):
settings = forms.MultipleChoiceField(
label="Settings",
choices=Configuration.SETTING_CHOICES,
required=False,
widget=FilteredSelectMultiple(
verbose_name="Settings",
is_stacked=False,
),
)
class Meta:
model = Configuration
fields = "__all__"
@admin.register(Configuration)
class ConfigurationAdmin(admin.ModelAdmin):
form = ConfigurationForm
list_display = ["__str__"]
fields = ["settings"]
Tips and Tricks Development Django 5.x Django 4.2 Django 3.2
Also by me
Django Paddle Subscriptions app
For Django-based SaaS projects.
Django GDPR Cookie Consent app
For Django websites that use cookies.