2017-05-08 8 views
0

サイドバーを全く表示せずに、既知の外部キー値に基づいてリストフィルタを適用したいと考えています。サイドバーなしのDjango管理者リストフィルタ

私は3つのID番号1,を持っています。 私は39のプログラムを持っていますが、それぞれにはさまざまなフィールドがあります。そのうちの1つは学校の外字キーです.1つは1,2 「学校」分野では3点です。

admin.pyでは、list_filter =(( 'school'))を使用してProgramsAdminを作成します。これは完全に動作し、サイドバーに3つの学校が表示されます。いずれかをクリックすると、プログラムが適切にフィルタリングされます。

ユーザーがログインし、自分が担当している学校を選択するため、サイドバーを表示せずにリストをフィルタリングします。選択された学校は設定表のデータベースに保存されますが、今はちょうど1,2,3にハードコードされ、サイドバーを表示しないようにしたいと思っています。

これは、limit_choices_to節を使用するだけで、多対多リレーションシップをフィルタリングするmodels.pyで簡単に機能します。 adminで簡単にフィルタリングすることはできません。ハードコードされた値、またはlimit_choices_toのようなフィルタ値を返す関数で管理者をフィルタリングすることも可能ですか? Djangoの管理者は、本当に基本的な管理パネルではなく、スタッフのツールやコンテンツ管理システムとして意図されて

+0

サイドバーに表示すると何が問題になりますか? – Soviut

+0

何も実際には、以下のコメントを参照してください。 – RMittelman

答えて

0

おかげで...。ロールやユーザーアクセスレベルの概念がないため、管理者のユーザーは他のユーザーのレコードを編集できます。

あなたがやっていることは、Django Adminが設計したものを超えています。カスタム動作や外観を必要とする場合は、ModelViewを使用して実際のページを構築する必要があります。こうすることで、ユーザーが表示および変更できる内容にユーザーごとの制限を適用することができます。

あなたが予想していたよりもうまくいくならば、たぶんDjango管理者があなたに与えたものを受け入れるべきです。

+0

私は、ユーザーがログインして学校を選択するのに慣れているアプリケーションを置き換えています。プログラムの編集や追加を行う前に、サイドバーの適切な学校をクリックするようにすることは、大きな訓練問題です。あなたは完全に正しいです、私は自分の建物を保存するために管理者を自動フィルタリングする簡単な方法があることを望んでいました。ありがとう... – RMittelman

+1

あなたは正しいです、それは問題の価値がないです。サイドバーを含む簡単な管理者と一緒に暮らしましょう。ありがとう、あなたはまだクレジットを取得します。 – RMittelman

関連する問題