2013-02-11 36 views
11

Django管理者変更ページにカスタムアクションを追加する方法を探しています。私はではないは、概要のドロップダウンボックスに追加できるアクションを探しています。カスタムDjango管理アクションを追加する

私のDjangoアプリケーションの1つのモデルには、ドキュメントに関する情報が含まれており、フロントエンドで自動的にPDFファイルにコンパイルされます。管理者に変更ページから直接PDFを直接レンダリングして、結果をすばやく確認できるようにしたいと考えています。

私はすでにchange_form.html/submit_line.htmlをオーバーライドして遊んでいますが、ボタンを追加することはまったく問題ありません。しかし、管理モジュールをクリーンな方法で拡張してカスタムアクションが含まれるようにする方法は不思議です。

答えて

4

カスタム管理ビューは基本的には通常のビューですので、多くの専門はありません。あなたはクリーンな統合のために検討すべきいくつかのこと:

  • AdminSiteget_urls()を通じてURLパターンを追加します。
  • adminテンプレートをサブクラス化するテンプレートをレンダリングするときに、RequestContextまたはContextに引数current_appを指定します。

EDIT:例は、私が言及したcurrent_app引数を使用しないことを http://shrenikp.webs.com/apps/blog/show/5211522-add-custom-view-method-for-django-admin-model-

注:ここでは例を発見

。私はPDFを生成するあなたの見解は、Contextで応答をレンダリングするのではなく、適切なコンテンツタイプを持つHttpResponseを返すので、必要ないと思います。すべてcurrent_appは、実際にはcurrent_appをどこかで使用するカスタムビューで使用される管理テンプレートをサブクラス化する場合にのみ意味があります。

この例では、URLをカプセル化して、ModelAdminに表示しています。 AdminSiteサブクラスを使ってこれを行うこともできますが、少なくともあなたのユースケースではこれはおそらく過剰です。

ちなみに、change_form.htmlテンプレートをオーバーライドすると、標準の変更ビューにボタンを追加するだけのアプリに適しています。これには特別なAPIはありません(残念ながら)。

+0

おかげで、私はあなたの答えを利用するのに十分な経験がないと思う。 Web上のどこにでもサンプルがありますか? – stschindler

+0

私は自分の答えを更新し、例へのリンクを追加しました。 –

関連する問題