2011-01-13 17 views
8

他のフィールドの値に応じて、管理者にフィールドを条件付きで表示する最適な方法は何ですか?Django Admin:フィールドを条件付きで表示する必要があります

特に私はadd_formとchange_formについて考えています。特定の選択肢が選択されるたびに、私はいくつかのフィールドを隠すか無効にしたいと思っています。

私はこれにはJavaScriptソリューションが必要かもしれないと考えていますが、これを行うためのより良い(つまり組み込みの)方法があるのだろうかと思っています。

+3

この問題の組み込みソリューションはありません。フィールドを動的に表示するには、カスタムjavascript/ajaxソリューションが常に必要です。 –

+0

ありがとう、私はそうだったと思った。私は、「間違った道」をやっているだけでは妄想的です。 – IntrepidDude

答えて

1

ベルンハルトです。フィールドのウィジェットを条件付きで表示する/表示しないように管理ビューとテンプレートをハックすることは可能かもしれませんが、管理者のユーザーの振る舞いに基づいて動的に実行したい場合は、javascriptを使用します。

しかしそれほど恐ろしいことではありません。少なくともDjangoの管理テンプレートには、モデル/インスタンス固有のIDがあり、表示/非表示の動作をきめ細かく制御できます。

+0

私はこれと同じ必要性があり、私はこれを行うjavascriptコードをどこに置くのだろうと思っています。私。どのテンプレートですか? –

0

私はあなた自身のModelFormを作成し、管理者がその(https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form)を使用するように指定できるはずだと思います。

フォームの_init __()メソッドを使用して、フィールドを選択的に表示します。

私は試してみて、それが動作すればこの答えを更新します。

(実際に質問を読んでください、ページが読み込まれる前に "他のフィールドの値"が設定されている場合は、このアイデアはうまくいくはずです。 、はい、JavaScriptが必要です)。

0

私の答えは難解かもしれませんが、あなたが取っているかもしれないデザインの方向性は、いくつかの再考の恩恵を受ける可能性があります。優れたUXを実現するためにTLCがAJAXに頼る必要があるインターフェイスがある場合は、そのためにAdminインターフェイスを使用したくないという傾向があります。

Djangoの管理者インタフェースを個人的に見ると、基本的なレベルで即座にCRUDビューを得ることができます。私は、ユーザーフレンドリーなインターフェースを必要とする人たちのために、(たとえこれらのユーザーのうちのいくつかが管理機能を操作していても)ピギーバックをしないようにします。これらのタイプのAjax UI/UXと複雑なフォームの検証を行うには、管理インターフェースを使用して技術的負債を取得します。

+0

実際、Bernhard Vallantは私の正確な考え方をはるかに簡潔な方法で言った。私は彼をupvoteします。 –

関連する問題