Django1.4で次の奇妙な問題が発生しました。
#forms.py
from django import forms
class MyForm(forms.Form):
my_choices = forms.ChoiceField()
# views.py
def my_view(request):
vchoices = (('a', 'AAAA'),
('b', 'BBBB'),)
form = MyForm()
# version1:
form.my_choices=choices
# version2:
form.my_choices.choices=vchoices
context={'form': form}
return render(request,index.html", {'form': form})
上記のコードを検討します。バージョン1を使用すると、出力が適切にレンダリングされますが、もちろん選択肢ボックスには選択肢がありません。version2を使用すると、次のエラーが発生します。
MyFormオブジェクトには属性'my_choices'がありません
どうしてそれができるの?バージョン1では、「my_choices」属性が存在するようですが、少なくともdjangoは文句を言いません。
2番目の質問は次のとおりです。forms.pyを次のように設定した場合
#forms.py
from django import forms
class MyForm(forms.Form):
my_choices = forms.ChoiceField()
my_choices.choices=(('a','aaaa'),('b','bbbb'))
フォームは正しくレンダリングされ、ドロップダウンボックスには選択肢が含まれています。
これを説明する方法、またはviews.pyでmy_choicesの属性の選択肢を設定する方法はありますか?
どうもありがとう