2011-07-22 9 views
3

私のdjangoアプリケーションでは、クライアントがWebページをカスタマイズできるようにしています。 これを行うために、テンプレートを生成するためのモデルを作成しました。実際にはうまくいきました。私の問題は、管理フォームにプレビューリンクを追加したいということです。 この方法で、テンプレートを保存するために「保存して編集を続ける」ことができます。必要に応じて、このリンクをクリックしてページの編集中にプレビューすることができます。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',) 

これは機能していますが、更新フォームに直接追加する方法はありますか?

UPDATE

私はそれがこの問題の主なアイデアに従うことによって、作業ました:Adding an extra button to one object in django admin

は、私はようやく私のモデルの管理者設定でJavaScriptのファイルを追加し、私が生成するjavascript関数を書きましたプレビューオブジェクトのURLプレビューを表示するためのビューを書かなくてはなりませんでした。ポストのソリューションとの違いは、サブミット入力の代わりにボタンを押したことに加え、プレビューページのポップアップをジャバスクリプトが開くことでした。したがって、変更をプレビューする際にモデルを更新することができる管理インターフェースにはまだいます。

ありがとうございました!

答えて

1

change_formのテンプレートをオーバーライドするだけで、オブジェクトツールへのリンクを追加することができます。これは一般的なプレビューリンクを置く場所です。実際、Django管理者は、get_absolute_urlが同じ場所に定義されているモデルの「サイト上での表示」プレビューリンクを置きます。

+0

標準のWebページのプレビュー用に2つのボタンを追加し、モバイル版用にもう1つのボタンを追加したので、この場合は使用できませんでした。ありがとうございました! – DoRivard

関連する問題