这是我的模特
from django.db import models
class Page(models.Model):
page_id = models.IntegerField(default=0)
class Question(models.Model):
page = models.ForeignKey(Page)
question = models.CharField(max_length=150)
class Option(models.Model):
question = models.ForeignKey(Question)
option = models.CharField(max_length=100)
image_class = models.CharField(max_length=75)
这是我的admin.py
from django.contrib import admin
from .models import Page, Question, Option
class OptionInline(admin.StackedInline):
model = Option
extra = 1
class QuestionInline(admin.StackedInline):
model = Question
extra = 1
inlines = [OptionInline]
class PageAdmin(admin.ModelAdmin):
inlines = [QuestionInline]
admin.site.register(Page, PageAdmin)
基本上我希望这个多级关系在管理站点中显示为多级内联。有人可以帮忙吗
答案 0 :(得分:0)
Django不支持开箱即用,但有一个名为django-nested-inline的项目可以完成这项工作。您也可以自己制定解决方案。
答案 1 :(得分:0)
Django 1.8提供InlineModelAdmin.show_change_link
,而不是使用嵌套的内联from django.contrib import admin
from .models import Page, Question, Option
class OptionInline(admin.StackedInline):
model = Option
extra = 1
class QuestionInline(admin.StackedInline):
model = Question
extra = 1
show_change_link = True
class PageAdmin(admin.ModelAdmin):
inlines = [QuestionInline,]
admin.site.register(Page, PageAdmin)
class QuestionAdmin((admin.ModelAdmin):
inlines = [OptionInline,]
admin.site.register(Question, QuestionAdmin)
这样,当您保存完成内联Page
模型的Question
模型时,名为“更改”的链接将显示在内联Question
模型的已保存实例中。点击它,您将登陆Question
模型实例的主页面,其中Option
模型为内联。
当您完成内联Option
模型并点击“保存并继续编辑”后,后退按钮会返回相关的Page
实例。
还有a post描述了如果使用以前的Django版本,如何获得相同的结果。