forms.ChoiceFieldの検証に問題があります。私は2つのテーブル/モデルを持っています
class City(models.Model):
...
name = models.CharField(max_length=64)
...
class ShoppingCenter(models.Model):
...
name = models.CharField(max_length=64)
city = models.ForeignKey(City)
人々は都市やショッピングセンターで自分の活動を登録することができます。しかし、都市がたくさんあり、さらに多くのショッピングセンターがあるので、ショッピングセンターの選択肢を選択した都市に限定したいと思います。都市名のCharFieldと空のChoiceFieldを使用してフォームを作成しました。
ユーザーがcharFieldに都市を入力した後、ajax / jqueryオートコンプリートを使用して、ajax/jqueryを使用してShoppingCenterChoiceFieldの値を入力します。
それはすべてうまくいくようです。有効な都市を入力すると、JavaScriptがShoppingCenter選択フィールドのオプションに入力します。
ただし、このフォームを検証したい場合は失敗します。私は得ています:
form_errors
{'shopping_centre_id':[u'有効な選択肢を選択してください。1は利用可能な選択肢の1つではありません。']}
1は有効なショッピングセンターIDですが、データベースから選択されました。
私は別のMultipleChoiceFieldが同じフォームであり、それは正常に機能します。2つの違いは、MultipleChoiceFieldが標準のDjangoを使用して生成され、ChoiceFieldがjavascript(ajax + django)を使用して作成されることだけです。
今のところ、self._errorsからエラーを削除し、shopping_centre_id値をcleaned_dataに追加する独自のcleanメソッドを定義することで回避策を見つけました。
検証エラーの原因を知っている人はいますか?