Django管理员和很多外键

时间:2017-09-20 14:42:22

标签: django

的Django == 1.11.5

你能帮我管理网站吗?我有很多相互关联的模型作为一对多:

 Frame
   |
    \Item
     |   \
     |    \
     |     \
     |      \
     |       \Sheet      
     |            |  
      \ItemFile   |\Image
                  |
                  |\File
                  |
                  \Note

好吧,一个框架包含许多项目等。让我们通过这三个模型及其管理类来说明:

模型

class Frame(models.Model):
     pass

class Item(models.Model):
    frame = models.ForeignKey('frames.Frame',
                               blank=False,
                               null=False,
                               on_delete=models.PROTECT,
                               verbose_name=_("frame"))
class Sheet(models.Model):
    item = models.ForeignKey(Item,
                             on_delete=models.PROTECT,
                             verbose_name=_("item"))

管理

class FrameAdmin(admin.ModelAdmin):
    inlines = [ItemInline]

class ItemInline(admin.StackedInline):
    inlines = [SheetInline]

class SheetInline(admin.StackedInline):
    inlines = [ImageAdmin]

问题在于我无法组织一个最低限度的管理员。这些内联类不适合。在管理员中,如果我编辑框架,则会显示项目。但床单没有。

如果我通过admin.ModelAdmin组织工作表,那么我将不得不不断切换上下文:创建一个Frame,在其编辑页面创建项目。然后去管理员家,创建一张表等。

我想做什么。从框架实例创建项目,从项目创建工作表。并且应该自动输入其外键的值。

是否可以顺利组织?

1 个答案:

答案 0 :(得分:0)

有一个库可以实现此功能https://github.com/s-block/django-nested-inline