Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Show a ManyToManyField as Checkboxes in Django Admin

Is there a simple way to show a ManyToManyField as Checkboxes in Django Admin? Thanks in advance!

like image 953
eos87 Avatar asked Jan 24 '11 16:01

eos87


People also ask

What is Admin Modeladmin in Django?

One of the most powerful parts of Django is the automatic admin interface. It reads metadata from your models to provide a quick, model-centric interface where trusted users can manage content on your site. The admin's recommended use is limited to an organization's internal management tool.

What is Prepopulated_fields in Django admin?

The attribute prepopulated_fields tells the admin application to automatically fill the field slug - in this case with the text entered into the name field.

How can I get admin panel in Django?

To login to the site, open the /admin URL (e.g. http://127.0.0.1:8000/admin ) and enter your new superuser userid and password credentials (you'll be redirected to the login page, and then back to the /admin URL after you've entered your details).


1 Answers

From this answer it seems like it is possible to use ModelAdmin.formfield_overrides to override the ManyToManyField to use CheckBoxSelectMultiple:

from django.db import models from django.contrib import admin from django.forms import CheckboxSelectMultiple  class MyModelAdmin(admin.ModelAdmin):     formfield_overrides = {         models.ManyToManyField: {'widget': CheckboxSelectMultiple},     } 

I haven't tried it and am merely quoting from the source, but it seems plausible. Good luck.

Warning: as @errx rightly pointed out, the documentation highlights the following caveat:

If you want to use a custom widget with a relation field (i.e. ForeignKey or ManyToManyField), make sure you haven't included that field's name in raw_id_fields or radio_fields.

formfield_overrides won't let you change the widget on relation fields that have raw_id_fields or radio_fields set. That's because raw_id_fields and radio_fields imply custom widgets of their own.

like image 134
Shawn Chin Avatar answered Oct 03 '22 10:10

Shawn Chin