0

管理コンソール内で3つのモデルを超えて複数のインラインを使用するのに少し問題があり、遊んでいます。

モデル:

class carManufacturer(models.Model):
    name = models.CharField(max_length=200)
    country = models.CharField(max_length=200)
    description = models.CharField(max_length=1000)

    def __unicode__(self):
        return self.name


class vehicleModel(models.Model):
    carManufacturer = models.ForeignKey(carManufacturer)
    model = models.CharField(max_length=200)

    def __unicode__(self):
        return self.model

class vehicleCode(models.Model):
    vehicleModel = models.ForeignKey(vehicleModel)
    variantCode = models.CharField(max_length=200) 
    variantBadge = models.CharField(max_length=200)
    manuStart = models.DateTimeField('Manufacture Start Date')
    manuFin = models.DateTimeField('Manufacture End Date')

    def __unicode__(self):
        return self.variantCode

私が探しているのは、自動車メーカーを追加するときです。インラインを介して自動車モデルを追加できます。モデルを編集するときは、別のインラインを介して車両コード/バリアントを編集できます。

使用しているadmin.pyファイルがあります。

from Cars.models import carManufacturer, vehicleModel, vehicleCode
from django.contrib import admin

class modelInline(admin.TabularInline):
    model = vehicleModel
    extra = 0

class codeInline(admin.TabularInline):
    variantCode = vehicleCode
    extra = 0


class CarAdmin(admin.ModelAdmin):
    fields = ['name',  'description', 'country']
    inlines = [modelInline]

class VehicleModelAdmin(admin.ModelAdmin):
    fields = ['carManufacturer','model']
    #inlines = [codeInline]


admin.site.register(carManufacturer, CarAdmin)
admin.site.register(vehicleModel, VehicleModelAdmin)

最初のインラインと同じ方法を使用する2番目のインラインのコメントを解除するとすぐに、次のエラーが発生します。

「model」は「VehicleModelAdmin.inlines[0]」の必須属性です。

私は自分が間違っていることを理解するのに苦労しています。特に最初のインラインが機能しているので、どんな入力でも大歓迎です。

4

1 に答える 1

4

codeInlineには、上記のようなモデルフィールドが必要なTabularInlineのモデルフィールドはありません。次のようなものが必要です

class codeInline(admin.TabularInline):
    model = vehicleCode
    extra = 0
于 2013-03-27T12:07:07.323 に答える