12

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

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

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

4

1 に答える 1

5

カスタム管理ビューは基本的に通常のビューであるため、多くの専門分野はありません。よりクリーンな統合のために考慮すべきいくつかの事柄:

  • のget_urls()を介してURLパターンを追加しAdminSiteます。
  • 管理者テンプレートをサブクラス化するテンプレートをレンダリングするとき、またはレンダリングするときにcurrent_app引数を指定します。RequestContextContext

編集

ここで例を見つけました: http ://shrenikp.webs.com/apps/blog/show/5211522-add-custom-view-method-for-django-admin-model-

current_appこの例では、私が言及した引数を利用していないことに注意してください。PDFを生成するためのビューはHttpResponse、応答をでレンダリングするのではなく、適切なコンテンツタイプでを返すだけだと思いますContext。したがって、これは必要ありません。全体として、実際にどこかcurrent_appで使用するカスタムビューで使用される管理テンプレートをサブクラス化する場合にのみ意味があります。current_app

この例では、URLとビューをにカプセル化していModelAdminます。サブクラスを介してこれを行うことも可能ですAdminSiteが、少なくともあなたのユースケースでは、これはおそらくやり過ぎです。

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

于 2013-02-11T12:27:28.047 に答える