我有一组看起来像这样的模型:
class Page(models.Model):
title = models.CharField(max_length=255)
class LinkSection(models.Model):
page = models.ForeignKey(Page)
title = models.CharField(max_length=255)
class Link(models.Model):
linksection = models.ForeignKey(LinkSection)
text = models.CharField(max_length=255)
url = models.URLField()
和一个看起来像这样的 admin.py:
class LinkInline(admin.TabularInline):
model = Link
class LinkSectionInline(admin.TabularInline):
model = LinkSection
inlines = [ LinkInline, ]
class PageAdmin(admin.ModelAdmin):
inlines = [ LinkSectionInline, ]
我的目标是获得一个管理界面,让我可以在一页上编辑所有内容。这种模型结构的最终结果是,事物被生成为一个看起来或多或少类似于的视图+模板:
<h1>{{page.title}}</h1>
{% for ls in page.linksection_set.objects.all %}
<div>
<h2>{{ls.title}}</h2>
<ul>
{% for l in ls.link_set.objects.all %}
<li><a href="{{l.url}}">{{l.title}}</a></li>
{% endfor %}
</ul>
</div>
{% endfor %}
正如我所料,我知道 Django 管理员中的 inline-in-an-inline 技巧失败了。有谁知道允许这种三级模型编辑的方法?提前致谢。