我遇到了类似的问题并解决了下面的问题,我相信它应该可以解决问题。
您想要的是将“设置”设置为Car变换形式中的内联,并将M2M字段指向“设置内联”中的“选项”,覆盖其窗口小部件以将其显示为复选框。
在你的models.py中:
class Option(models.Model): name = models.CharField(max_length=255) def __unicode__(self): return self.name class Car(models.Model): hsn = models.PositiveIntegerField("HSN", max_length=4) tsn = models.PositiveIntegerField("TSN", max_length=3) mileage = models.PositiveIntegerField("Kilometerstand") def __unicode__(self): return self.hsn class Setting(models.Model): name = models.CharField(max_length=255) options = models.ManyToManyField(Option, blank=True, null=True) car = models.ForeignKey(Car, blank=True, null=True) def __unicode__(self): return self.name
在你的admin.py中:
from django.forms import CheckboxSelectMultiple class OptionAdmin(admin.ModelAdmin): pass admin.site.register(Option, OptionAdmin) class SettingInline(admin.TabularInline): model = Setting formfield_overrides = { models.ManyToManyField: {'widget': CheckboxSelectMultiple}, } class CarAdmin(admin.ModelAdmin): inlines = [ SettingInline ] admin.site.register(Car, CarAdmin)
这个解决方案可能有一些注意事项,例如每个设置的常用选项或复选框下方错误的帮助文本,我没有进一步看,但它应该是可修复的。