作者:手机用户2502903815 | 来源:互联网 | 2023-09-24 14:46
您无法在Django管理员中进行“嵌套”内联(即,您无法使用内联问题进行测验,每个内联问题都具有内联答案)。因此,您需要将目光放到仅包含内联问题(然后,如果导航查看单个问题,则可能会有内联答案)。
因此,您的模型很好,但是您的管理代码应如下所示:
class QuestionInline(admin.TabularInline):
model = Question
extra = 20
class AnswerInline(admin.TabularInline):
model = Answer
extra = 4
class QuestionAdmin(admin.ModelAdmin):
inlines = [AnswerInline]
class AnswerAdmin(admin.ModelAdmin):
pass
class QuizAdmin(admin.ModelAdmin):
inlines = [QuestionInline]
AnswerAdmin拥有AnswerInline或QuestionAdmin拥有QuestionInline是没有意义的(除非这些是具有自引用外键的模型)。而且QuizAdmin不能具有AnswerInline,因为Answer没有到Quiz的外键。
如果Django确实支持嵌套内联,则逻辑语法将使QuestionInline接受“内联”属性,您可以将其设置为[AnswerInline]。但事实并非如此。
还要注意,“ extra = 20”表示每次加载时,每个测验的底部都会有20个空白问题表格(即使它已经有20个实际问题)。也许这就是您想要的-
可以使页面很长,但是可以轻松一次添加很多问题。