在Django管理表单中添加预览对象的额外链接
在我的Django应用中,我们让客户可以自定义他们的网页。为此,我创建了一个模型来生成模板,现在这个功能运行得很好。我的问题是,我想在管理表单中添加一个预览链接。这样我就可以选择“保存并继续编辑”来保存模板,如果需要的话,还可以点击这个链接来预览页面。
我已经在列表显示中激活了预览功能,但我希望这个字段能直接显示在表单中。
def get_absolute_url(self):
return "preview/%i/" % self.id
def preview_template(self):
return '<a href="' + self.get_absolute_url() + '" target="_blank">Preview</a>'
preview_template.allow_tags = True
preview_template.short_description = 'Preview'
class BlockPageAdmin(admin.ModelAdmin):
list_display = ( ... 'preview_template',)
这个方法有效,但有没有办法直接在更新表单中添加它呢?
更新
我通过参考这个问题的主要思路解决了这个问题: 在Django管理界面为一个对象添加额外按钮
我最终在我的模型的管理配置中添加了一个JavaScript文件,并编写了一个JavaScript函数来生成预览对象的链接。我还写了一个视图来显示我想要的预览。与帖子中的解决方案不同的是,我做了一个按钮,而不是提交输入框,并且我的JavaScript会打开一个预览页面的弹窗。这样你仍然可以留在管理界面中,随意更新模型,同时预览你的更改。
谢谢!
1 个回答
1
你可以直接修改更改表单的模板,或者在对象工具里添加一个链接,这里通常会放一个“预览”链接。实际上,Django 的管理后台会在同样的位置为那些定义了 get_absolute_url
的模型放一个“在网站上查看”的预览链接。