【问题标题】:Django Admin - Multiple InlinesDjango Admin - 多个内联
【发布时间】:2013-03-17 11:08:19
【问题描述】:

在我的管理控制台中使用多个内联时遇到了一些麻烦,超过了 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)

一旦我取消注释我的第二个内联,它使用与第一个相同的方法,我就会收到以下错误:

'model' 是 'VehicleModelAdmin.inlines[0]' 的必需属性。

我很难理解我做错了什么,特别是因为我已经完成了第一个内联工作,任何输入都将不胜感激

【问题讨论】:

  • 我不确定,但model(在fields 中列出)可能与ModelAdmin 类的另一个属性发生冲突。尝试将其更改为其他内容
  • codeInline 没有任何 TabularInline 的模型字段,您确实需要上述模型字段。
  • 感谢大家的回复,将其从 variantCode 更改为模型工作。模型字段有什么意义@SidharthShah 是内联需要操作的东西吗?我想我对 django 关键字和我自己的字段感到困惑!
  • @purchas 如果您愿意分享您的完整模型。我可以为你重构它并更详细地解释你。但是在这里,为了让内联工作,他们需要知道他们需要使用什么“模型”。
  • @SidharthShah 非常感谢我现在明白了。这些是我的完整模型,我理解你的意思和我忽略的内容,如果你想发布答案,很乐意接受它

标签: django django-admin


【解决方案1】:

codeInline 没有任何 TabularInline 的模型字段,您确实需要上述模型字段。它应该有类似以下的内容

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

【讨论】:

  • 我最看重的评论 - “但是在这里,为了让内联工作,他们需要知道他们需要使用什么“模型”。”
  • @purchas 谢谢。这是我第一个被接受的答案:)
猜你喜欢
  • 2010-12-20
  • 2023-03-20
  • 2011-02-23
  • 2020-04-16
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2013-11-17
相关资源
最近更新 更多