この問題は非常に奇妙で、誰かが私を助けてくれることを願っています。議論のために、私は Book モデルへの ForeignKey 関係を持つ Author モデルを持っています。著者を表示するとき、その著者に関連付けられた本のみを表示する ChoiceField が必要です。そのため、AuthorForm をオーバーライドします。init () メソッドを使用して、著者 ID に基づいて本をフィルター処理するクエリに基づいて、選択肢 (タプル) のリストを作成します。タプルは、本の ID と本の名前を組み合わせたものです (つまり、(1, 'Moby Dick'))。これらの「選択肢」は、ModelForm のchoices 属性に割り当てられます。
フォームがテンプレートでレンダリングされると、ChoiceField が適切に表示され、その著者に関連付けられた本のみが一覧表示されます。
これは物事が奇妙になるところです。
フォームを保存すると、ValueError が返されます (Cannot assign "u'1'":Author.book" must be Book instance). このエラーは、FK 関係により理にかなっています。コードにステートメントを追加し、他に変更を加えず、レコードを保存すると、機能します. ValueError は魔法のように消えます. これを何度も試して、うっかり別の変更を加えていないことを確認しました.
ここで何が起こっているか知っている人はいますか?