Djangoでformsetを使って、セレクトボックスを含むformにchoiceを注入する
これが必要になった理由
エディット画面で、セレクトボックスを持つformを複数個追加したい。
また、その時の選択肢には単純にchoiceにmodelのタイトルを出すのではなく、タイトルが設定されていない場合はmodelがグルーピングしているものをサマリーして出したい。
コード
モデルではstaticmethodで選択肢となる「タイトルのリスト」を作る関数を作っておく。
formとformsetではとりあえずchoicesを空に
viewsで作ったタイミングで注入する。理由としては、modelがmigrateされているの前提で処理を作ると最初からDockerなどでビルドするとエラーが出てしまう場合があるから
やってることはformsetの中身をイテレートするとformをいじれるのでそのときに設定してしまえ、という感じなのですが結構ごちゃっとしてて忘れそうなのでメモ
とりあえず、うまく行きました。 articleやarticle_groupが増えたとしても選択肢に出てきます。