Django多个嵌套内联表单集

时间:2013-09-16 13:12:27

标签: django django-forms

这甚至可能吗?

我需要存储一些要作为json / rest检索的文档。

Document有很多Sections,而一个部分有一个标题,一个正文和许多Images

有没有办法可以用这种结构制作表格?

Publication
|-- Section
    |-- Image
    |-- Image
|-- Section
    |-- Image
|-- Section
    |-- Image
    |-- Image
    |-- Image

我的模特:

class Publication(models.Model):
    title = models.CharField(max_length=64)

class Section(models.Model):
    publication = models.ForeignKey(Publication)
    heading = models.CharField(max_length=128)
    body = models.TextField()

class Image(models.Model):
    section = models.ForeignKey(Section)
    image = models.ImageField(upload_to='images/')
    caption = models.CharField(max_length=64, blank=True)
    alt_text = models.CharField(max_length=64)

ImagePublication相关时,我可以相对轻松地执行此操作,因为只有一个级别的嵌套。

Image属于Section时,我不确定如何构建表单。 似乎没有简单的方法可以使用内联表单集来完成此操作。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

这不能在香草Django中完成。我使用django-nested-inlines来做到这一点并且效果非常好。

from django.contrib import admin
from nested_inlines.admin import NestedModelAdmin, NestedTabularInline

from my.models import Publication, Section, Image


class ImageInline(NestedTabularInline):
    model = Image


class SectionInline(NestedTabularInline):
    model = Section
    inlines = [ImageInline,]


class PublicationAdmin(NestedModelAdmin):
    inlines = [SectionInline,]


admin.site.register(Publication, PublicationAdmin)