質問: ### 前提・実現したいこと djangoとMariadbを使ってwebアプリケーションを作っています。 作っているアプリは、職場内で仕事上の失敗例、役立ち情報などをデータベースに蓄積し、活用 するためのものです。 その失敗例、役立ち情報は大分類、小分類を付与してデータベースに蓄積しようとしています。 情報を入力する際は、フォームに「大分類」、「小分類」、「情報」の3つが入力できる様にしています。 (大分類と小分類は親子関係であり、例えば大分類Aに紐づいた小分類a,b,c... といった感じ) そのフォームでは、大分類と小分類はリストボックスになっており、大分類の選択に応じて小分類 のリストが変わる動的なものにしたいと考えています。 ### 発生している問題・エラーメッセージ model.py, view.py ,templateを作って実装するところまでやってみたのですが、 唯一、フォーム内の「大分類」、「小分類」の入力が期待したとおりに実装できていません。 具体的には、大分類を選んでも、小分類の選択肢が絞られず、小分類フィールドの全ての値がリストとして表示されます。理想的には、選んだ大分類によって、対応した小分類のみがリストに表示されてほしいです。 大分類、小分類の間には主キーによって関連性を持たせており、それはデータベース上で確認できているのですが、どうもdjango側の記述に問題がある様です。 →こういった、親子関係にある複数のフィールドをフォーム内でどのようにして表示するか、 一般的な実現方法を教えてもらいたいです。 ### 補足情報(言語/FW/ツール等のバージョンなど) django1.1, python2.7
回答: どうやってtemplateとformを書いてるかはわかりませんが、 通常は、フォームで大分類を選んだときに小分類をフィルタかけて 選択肢を絞るという機能は、javascriptで実装します。 標準ではそんなwidgetはなかったと思うので、 formに自分でjavascriptを書いてやる必要があります。 もう一つの選択肢として、入力フォームをウィザート形式にして、 大分類を選んだあとに画面遷移を行ってそこでフィルタをかける方法があります。 こちらは画面遷移の処理を書けばいいだけなので、自分でjavascriptを書く必要はないです。