Ну, если быть точным, это виджет, который Django Admin выбирает для отображения в случае ManyToManyField.
Вот в этом случае его виджет SelectMultiple, который вы считаете, менее удобен для пользователя.
Что ж, проще всего, вы всегда можете выбрать виджет, используя свой собственный ModelForm.
Но в случае, если вы хотите, чтобы в Django Admin вам понадобилось туда и обратно. Проверьте это.
from django.forms import widgets
from django.contrib import admin
class MyModelAdmin(admin.ModelAdmin):
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
"""
Get a form Field for a ManyToManyField.
"""
# If it uses an intermediary model, don't show field in admin.
if db_field.rel.through is not None:
return None
if db_field.name in self.raw_id_fields:
kwargs['widget'] = admin.widgets.ManyToManyRawIdWidget(db_field.rel)
kwargs['help_text'] = ''
elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):
kwargs['widget'] = admin.widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
else:
kwargs['widget'] = widgets.CheckboxSelectMultiple()
kwargs['help_text'] = ''
return db_field.formfield(**kwargs)
Теперь определите вашего обычного администратора в admin.py как
class SomeModelAdmin(MyModelAdmin):
search_fields = ['foo', 'bar']
list_display = ('foo',)
ordering = ('-bar',)
admin.site.register(SomeModel, SomeModelAdmin)
Теперь вы получите флажки в DJango Admin. Конечно, вам понадобятся некоторые изменения CSS.