添加一个额外的链接以在Django管理表单中预览您的对象

时间:2011-07-22 19:41:22

标签: python django django-admin

在我的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',)

这是有效的,但有没有办法直接在更新表单中添加它?

更新

我按照这个问题中的主要想法开始工作:Adding an extra button to one object in django admin

我最后在我的模型的管理配置中添加了javascript文件,我编写了一个javascript函数来生成预览对象的url。我必须写一个视图来显示我希望的预览。与帖子上的解决方案的不同之处在于我做了一个Button而不是提交输入,而且我的javascript打开了预览页面的弹出窗口。因此,您仍然可以保留在管理界面中,您可以在预览更改时根据需要更新模型。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以覆盖change_form的模板,也可以添加指向对象工具的链接,这是放置“预览”链接的常用位置。事实上,Django管理员为在同一位置定义get_absolute_url的模型提供了“在网站上查看”预览链接。