ジャンゴ管理エリアのツリー

django管理エリアのツリーであるモデルを編集することは非常に不便で、愛されています。 すぐに、オブジェクトのリストではなくツリーを表示したいという要望がありました。これには、素晴らしいjstreeライブラリを使用できます。

djangoでツリーを効果的に使用するために、 mpttがあります。これは、モデルにツリーなどを表示するためのテンプレートタグと同様に、効率的な選択のためのフィールドとメソッドを追加します。

mpttを使用しない場合は、親へのリンクがあるだけです。jstreeは1つのjavascriptを使用して接続できます。これは別の記事です。

mpttを使用するモデルの詳細。



mpttを使用して管理者モデルの基本クラスを作成しました。 オブジェクトのリストのビューを独自のビューに置き換えます。これはツリーに表示され、Ajaxリクエストを追加してブランチを新しい場所に移動し、オブジェクトの名前を変更して削除します。

したがって、ブランチを目的の場所にドラッグし、名前を変更して削除できます。 ブランチを作成すると、オブジェクトを作成するビューにリダイレクトされ、親要素へのリンクが公開されます。

いくつかのフィールドをツリーブランチに表示できます。 ユーザーが使用できないアクションがある場合、jstreeでブロックされます。 ブランチをクリックすると、編集ビューにリダイレクトされます。右クリックすると、コンテキストメニューが表示されます。



スクリーンショット



これを利用するには、mptt_adminを設定する必要があります。



hg clone http://code.tabed.org/mptt_admin/

cd mptt_admin

python setup.py install







mptt_adminと共にサンプルプロジェクトがあり、テストに使用できます。



accに追加します。 次のようなadmin.pyコード:



 from myapp.models import MyModel from mpttadmin import MpttAdmin class MyModelAdmin(MpttAdmin): tree_title_field = 'name' tree_display = ('name','slug','created|date') #name    class Meta: model = MyModel
      
      





テンプレートはMpttAdminで保護されており、必要なjavascriptを自分で与える方法を知っています。



tree_title_fieldは名前の変更に必要です。指定しない場合、名前の変更は使用できず、オブジェクトの__unicode__が表示されます。

list_displayとの類推により、いくつかのフィールドを指定でき、実装機能のおかげでそれらでフィルターを使用できます(tree_title_fieldを除く)。



All Articles