我首先需要把
ManyToMany
桌子
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=128)
groups = models.ManyToManyField('Group', through='Membership')
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField('Person', through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.PROTECT)
group = models.ForeignKey(Group, on_delete=models.PROTECT)
然后我需要像这样创建内联:
from django.contrib import admin
from .models import *
from .forms import *
class MembershipInline(admin.TabularInline):
model = Membership
form = MembershipForm
class PersonAdmin(admin.ModelAdmin):
inlines = [
MembershipInline,
]
class GroupAdmin(admin.ModelAdmin):
inlines = [
MembershipInline,
]
然后,在
forms.py
,
from django import forms
from .models import *
class MembershipForm(forms.ModelForm):
class Meta:
model = Membership
exclude = ()
widgets = {
'person': whatever_widget_i_want
}
这个
TabularInline
类将负责为我删除不需要的字段小部件。