1
私はプロジェクトでDjango Form Wizardを使用しています。ユーザーが特定のフィールドの初期データを提供できるようにしたいのですが、初期データを含むフィールドを無効にしたいと考えています。Djangoフォームウィザードステップ間の永続的な初期データ
ユーザーが[戻る]ボタンをクリックすると、初期データが消去されるという問題があります。例えば
これは私のフォームです(初期データは、第二段階として設定されている) あなたはすべてがここに罰金です見ることができるように、フォームフィールドは無効になり、値が選択されています。今すぐnext
をクリックします。
フォームフィールドは、まだ無効になっていますが、値が消えています。..私たちはnext
をクリックして、我々は問題のない第二のステップに行くが、今、私はback
をクリックすると!
私が使用しているコードは、この(関連部分)のようになります:
フォーム
CHOICES=[('ONE','Choice 1'),
('TWO','Choice 2'),
('THREE','Choice 3'),
('FOUR','Choice 4'),
]
class BookingForm1(forms.Form):
""" Select reservation type"""
sko = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())
ウィザード
def get_form(self, step=None, data=None, files=None):
form = super(PresentView, self).get_form(step, data, files)
step = step or self.steps.current
initial = {
'sko': {
'initial':'TWO'
}
}
for field in initial:
try:
form.fields[field].widget.attrs['readonly'] = True
form.fields[field].widget.attrs['disabled'] = True
form.fields[field].required = False
form.fields[field].initial = initial[field]['initial']
except:
pass
任意のアイデアをいただければ幸いです!
私はあなたのための修正はありませんが、ここではそれが機能していない理由の説明です:フィールドを無効にすると、ブラウザは値をサーバーに送信しません。元のフォームに戻ると、フォームがバインドされているため、Djangoはフォームデータを使用して、「初期」データを無視します。ただし、フォームデータには無効なフィールドの値が含まれていないため、フォームのレンダリング時に値は選択されません。 – Alasdair