【发布时间】:2018-11-15 09:25:33
【问题描述】:
当我向django admin 添加一些内联时,如下所示,Add another {model name} 消失了。如果我检查 javascript 控制台,我会看到以下错误:
未捕获的类型错误:无法读取未定义的属性“fn”
在 inlines.js:20
在 inlines.js:295
这是我的 Django 管理员:
@admin.register(models.Paper)
class PaperAdmin(BaseLiteratureAdmin):
class EditedPaperAdminInline(admin.StackedInline):
model = models.EditedPaper
extra = 0
class SupplementaryInformationAdminInline(admin.StackedInline):
model = models.SupplementaryInformation
extra = 0
class PaperNotesAdminInline(BaseNotesAdminInline):
exclude = tuple(
i for i in BaseNotesAdminInline.exclude if i != 'paper'
)
class ReferencedPaperInline(admin.StackedInline):
model = models.Paper.referenced_papers.through
extra = 0
fk_name = 'from_paper'
verbose_name = "Referenced Paper"
verbose_name_plural = "Referenced Papers"
inlines = (
EditedPaperAdminInline, # problem
PaperNotesAdminInline, # ok single/together
ReferencedPaperInline, # ok single/together
SupplementaryInformationAdminInline, # problem
)
我找到了解决方案——改变inlines列表中内联的顺序,如下所示:
inlines = (
PaperNotesAdminInline, # ok single/together
ReferencedPaperInline, # ok single/together
EditedPaperAdminInline, # problem
SupplementaryInformationAdminInline, # problem
)
每个内联旁边的#cmets 说明PaperNotesAdminInline 和ReferencedPaperInline 都“正常”,因为如果包含Add another {model name} 链接,它们仍然会出现。如果按照管理模型定义中显示的顺序添加其他两个内联,则会导致 JavaScript 错误,并且每个内联的链接都会消失。但是,如果我将顺序更改为第二个 inlines 列表,则所有内容都会正确加载。
这是怎么回事?
【问题讨论】:
标签: javascript python django python-3.x