シンプルな 2 部構成の FormWizard を実装したいと考えています。フォーム 1 は、次のように動的に生成されます。
class BuyAppleForm(forms.Form):
creditcard = forms.ChoiceField(widget = forms.RadioSelect)
type = forms.ChoiceField(widget = forms.RadioSelect)
def __init__(self,*args, **kwargs):
user = kwargs['user']
del kwargs['user']
super(BuyAppleForm, self).__init__(*args, **kwargs)
credit_cards = get_credit_cards(user)
self.fields['creditcard'].choices = [(card.id,str(card)) for card in credit_cards]
apple_types= get_types_packages()
self.fields['type'].choices = [(type.id,str(type)) for type in apple_types]
これにより、利用可能な選択肢のリストを含むフォームが動的に作成されます。
私の 2 番目のフォームでは、実際には何も入力したくありません。クレジット カード情報、Apple 情報、および金額 (合計、税、送料) を含む確認画面を表示したいだけです。ユーザーが [OK] をクリックしたら、リンゴの購入を開始します。
kwargs で request.user オブジェクトを渡すことで、単一のフォームの方法を実装できました。しかし、FormWizard では、これがわかりません。
私は問題に間違ってアプローチしていますか? FormWizard はこれを行う適切な方法ではありませんか? __init__
そうである場合、Formメソッドは HTTP 要求からユーザー オブジェクトにどのようにアクセスできますか?