【问题标题】:Many-to-many relationships in Django AdminDjango Admin中的多对多关系
【发布时间】:2012-10-20 00:01:56
【问题描述】:

型号:

class Detail(models.Model):
    def __unicode__(self):
            return self.title
    title = models.CharField(max_length=32)

class Cars(models.Model):
    def __unicode__(self):
            return self.name
    name = models.CharField(max_length=32, unique=True)
    details = models.ManyToManyField(Detail)

所以,每辆车都有很多细节 - 车轮、发动机等。如何做到这一点:在 Django Admin 中的 Cars 菜单中,在该菜单中我们有许多细节行(如tutorial)。 在 admin 我使用:

class DetailInline(admin.TabularInline):
    model = Detail
    extra = 6
class CarsAdmin(admin.ModelAdmin):
    inlines = [DetailInline]

但它有错误:Detail has no ForeignKey to Cars。如何解决?

【问题讨论】:

  • 您的模型中有一些模棱两可的地方:是否可以为许多汽车重复使用相同的细节?如果是,则不应使用内联,因为在修改汽车的详细信息时,它将更改所有使用它的汽车的详细信息。如果不是,解决方案是在 Detail 模型中使用 ForeignKey 指向 Car 模型。

标签: django admin


【解决方案1】:

Django 本身不允许您添加反向内联。 即,您可以让详细信息页面包含所有汽车的内联管理员,这些汽车包含该特定详细信息的外键。但是,反过来是不可能的。

有一个解决方法,但您必须稍微覆盖管理模板。这里有一个关于此的先前 SO 问题:Inline-like solution for Django Admin where Admin contains ForeignKey to other model

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2011-05-25
    • 2015-08-28
    相关资源
    最近更新 更多