我想在另一个模型中为我的模型定义一些字段。这里:
class Setting(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class Option(models.Model):
name = models.CharField(max_length=255)
setting = models.ForeignKey(Setting)
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")
settings = models.ManyToManyField(Setting)
在管理员中,我想将每个Settings.name作为CarAdmin中的一个字段,并带有一个选项框Options.name
我该怎么做?
答案 0 :(得分:0)
我遇到了类似的问题并解决了下面的问题,我相信它应该可以解决问题。
您想要的是将设置设置为Car changeform中的内联,并将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)
这个解决方案可能有一些注意事项,例如每个设置的常用选项或复选框下面的错误帮助文本,我没有进一步看,但它应该是可修复的。