Karen Galstyan
Karen Galstyan

Reputation: 149

Django many-to-many, display in admin

Please help to understand how to display list of groups in Django admin Person instance in this case:

class Person(models.Model):
  name = models.Charfield(max_length=120)

class Group(models.Model):
  title = models.Charfield(max_length=120)
  persons = models.ManyToManyField(Person)

Upvotes: 2

Views: 2171

Answers (2)

neverwalkaloner
neverwalkaloner

Reputation: 47354

You need to use inlines. Add this to the admin.py file:

from .models import Group

class GroupInline(admin.TabularInline):
    model = Group.persons.through
    extra = 1

class PersonAdmin(admin.ModelAdmin):
    inlines = [GroupInline]

admin.site.register(Person, PersonAdmin)

See details here.

Upvotes: 10

You can inline "Group" to "Person" with this code below:

admin.py":

from django.contrib import admin
from .models import Group, Person

class GroupInline(admin.TabularInline):
    model = Group

@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
    inlines = [GroupInline]

Upvotes: 0

Related Questions