J'ai un ensemble de modèles qui ressemblent à ça :
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()
et un admin.py qui ressemble à ça :
class LinkInline(admin.TabularInline):
model = Link
class LinkSectionInline(admin.TabularInline):
model = LinkSection
inlines = [ LinkInline, ]
class PageAdmin(admin.ModelAdmin):
inlines = [ LinkSectionInline, ]
Mon objectif est d'obtenir une interface d'administration qui me permette de tout modifier sur une seule page. Le résultat final de cette structure de modèle est que les choses sont générées dans une vue + modèle qui ressemble plus ou moins à :
<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 %}
Je sais que l'astuce inline-in-an-inline échoue dans l'administration de Django, comme je m'y attendais. Quelqu'un connaît-il un moyen d'autoriser ce type d'édition de modèle à trois niveaux ? Merci d'avance.